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 classBinaryOperation.OpType
-
Field Summary
Fields Modifier and Type Field Description private booleanconvertRightprivate TypeInfoforcedTypeprivate BinaryOperation.OpTypeopType-
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.StringgetOperationToken()BinaryOperation.OpTypegetOperationType()Returns the type of this binary operation.java.lang.StringBuildergetUnenclosedSQL(java.lang.StringBuilder builder, int sqlFlags)Get the SQL statement of this expression.private DbExceptiongetUnexpectedForcedTypeException()private DbExceptiongetUnsupported(int l, int r)ValuegetValue(SessionLocal session)Return the resulting value for the current row.booleanneedParentheses()Returns whether this expressions needs to be wrapped in parentheses when it is used as an argument of other expressions.Expressionoptimize(SessionLocal session)Try to optimize the expression.private ExpressionoptimizeDateTime(SessionLocal session, int l, int r)private voidoptimizeDecfloat(TypeInfo leftType, TypeInfo rightType)private ExpressionoptimizeInterval(int l, int r)private voidoptimizeNumeric(TypeInfo leftType, TypeInfo rightType)voidsetForcedType(TypeInfo forcedType)Sets a forced data type of a datetime minus datetime operation.private voidswap()-
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:ExpressionReturns whether this expressions needs to be wrapped in parentheses when it is used as an argument of other expressions.- Overrides:
needParenthesesin classExpression- Returns:
trueif it is
-
getUnenclosedSQL
public java.lang.StringBuilder getUnenclosedSQL(java.lang.StringBuilder builder, int sqlFlags)Description copied from class:ExpressionGet 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:
getUnenclosedSQLin 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:ExpressionReturn the resulting value for the current row.- Specified by:
getValuein classExpression- Parameters:
session- the session- Returns:
- the result
-
optimize
public Expression optimize(SessionLocal session)
Description copied from class:ExpressionTry to optimize the expression.- Specified by:
optimizein 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
-
-