org.h2.expression

## Class Operation1_2

- java.lang.Object
- - org.h2.expression.Expression
  - - org.h2.expression.Operation1_2

All Implemented Interfaces:
  HasSQL, Typed

Direct Known Subclasses:
  Function1_2, TimeZoneOperation

    public abstract class Operation1_2
    extends Expression

Operation with one or two arguments.

### Field Summary

Fields
`protected Expression` `left` The left part of the operation (the first argument).
`protected Expression` `right` The right part of the operation (the second argument).
`protected TypeInfo` `type` The type of the result.

### 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
`protected` `Operation1_2(Expression left, Expression right)`

### Method Summary

All Methods Instance Methods Concrete Methods
`int` `getCost()` Estimate the cost to process the expression.
`Expression` `getSubexpression(int index)` Returns subexpression with specified index.
`int` `getSubexpressionCount()` Returns count of subexpressions.
`TypeInfo` `getType()` Returns the data type.
`boolean` `isEverything(ExpressionVisitor visitor)` Check if this expression and all sub-expressions can fulfill a criteria.
`void` `mapColumns(ColumnResolver resolver, int level, int state)` Map the columns of the resolver to expression columns.
`void` `setEvaluatable(TableFilter tableFilter, boolean value)` Tell the expression columns whether the table filter can return values now.
`void` `updateAggregate(SessionLocal session, int stage)` Update an aggregate value.

### 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, getUnenclosedSQL, getValue, getWhenSQL, getWhenValue, isConstant, isIdentity, isNullConstant, isValueSet, isWhenConditionOperand, needParentheses, optimize, 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

#### left

    protected Expression left

The left part of the operation (the first argument).

#### right

    protected Expression right

The right part of the operation (the second argument).

#### type

    protected TypeInfo type

The type of the result.

### Constructor Detail

#### Operation1_2

    protected Operation1_2(Expression left,
                           Expression right)

### Method Detail

#### getType

    public TypeInfo getType()

Description copied from class: `Expression`
Returns the data type. The data type may be unknown before the optimization phase.

Specified by:
  `getType` in interface `Typed`
Specified by:
  `getType` in class `Expression`
Returns:
  the data type

#### mapColumns

    public void mapColumns(ColumnResolver resolver,
                           int level,
                           int state)

Description copied from class: `Expression`
Map the columns of the resolver to expression columns.

Specified by:
  `mapColumns` in class `Expression`
Parameters:
  `resolver` - the column resolver
  `level` - the subquery nesting level
  `state` - current state for nesting checks, initial value is `Expression.MAP_INITIAL`

#### setEvaluatable

    public void setEvaluatable(TableFilter tableFilter,
                               boolean value)

Description copied from class: `Expression`
Tell the expression columns whether the table filter can return values now. This is used when optimizing the query.

Specified by:
  `setEvaluatable` in class `Expression`
Parameters:
  `tableFilter` - the table filter
  `value` - true if the table filter can return value

#### updateAggregate

    public void updateAggregate(SessionLocal session,
                                int stage)

Description copied from class: `Expression`
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.

Specified by:
  `updateAggregate` in class `Expression`
Parameters:
  `session` - the session
  `stage` - select stage

#### isEverything

    public boolean isEverything(ExpressionVisitor visitor)

Description copied from class: `Expression`
Check if this expression and all sub-expressions can fulfill a criteria. If any part returns false, the result is false.

Specified by:
  `isEverything` in class `Expression`
Parameters:
  `visitor` - the visitor
Returns:
  if the criteria can be fulfilled

#### getCost

    public int getCost()

Description copied from class: `Expression`
Estimate the cost to process the expression. Used when optimizing the query, to calculate the query plan with the lowest estimated cost.

Specified by:
  `getCost` in class `Expression`
Returns:
  the estimated cost

#### getSubexpressionCount

    public int getSubexpressionCount()

Description copied from class: `Expression`
Returns count of subexpressions.

Overrides:
  `getSubexpressionCount` in class `Expression`
Returns:
  count of subexpressions

#### getSubexpression

    public Expression getSubexpression(int index)

Description copied from class: `Expression`
Returns subexpression with specified index.

Overrides:
  `getSubexpression` in class `Expression`
Parameters:
  `index` - 0-based index
Returns:
  subexpression with specified index, may be null