Top Description Fields Constructors Methods
org.h2.expression

public abstract Class OperationN

extends Expression
implements ExpressionWithVariableParameters
Class Inheritance
All Implemented Interfaces
org.h2.expression.ExpressionWithVariableParameters
Known Direct Subclasses
org.h2.expression.SearchedCase, org.h2.expression.function.FunctionN, org.h2.expression.function.JsonConstructorFunction, org.h2.expression.ConcatenationOperation
Imports
java.util.Arrays, org.h2.engine.SessionLocal, org.h2.message.DbException, org.h2.table.ColumnResolver, .TableFilter, org.h2.value.TypeInfo

Operation with many arguments.

Field Summary

Modifier and TypeField and Description
protected Expression[]
args

The array of arguments.

protected int
argsCount

The number of arguments.

protected TypeInfo
type

The type of the result.

Inherited from org.h2.expression.Expression:
AUTO_PARENTHESESMAP_IN_AGGREGATEMAP_IN_WINDOWMAP_INITIALWITH_PARENTHESESWITHOUT_PARENTHESES

Constructor Summary

AccessConstructor and Description
protected

Method Summary

Modifier and TypeMethod and Description
public void
addParameter(Expression
the expression
param
)

Implements org.h2.expression.ExpressionWithVariableParameters.addParameter.

Adds the parameter expression.

public void
doneWithParameters()

Implements org.h2.expression.ExpressionWithVariableParameters.doneWithParameters.

This method must be called after all the parameters have been set.

public int
getCost()

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

Estimate the cost to process the expression.

public Expression
getSubexpression(int
0-based index
index
)

Overrides org.h2.expression.Expression.getSubexpression.

Returns subexpression with specified index.

public int
public TypeInfo
getType()

Implements abstract org.h2.expression.Expression.getType.

Implements org.h2.value.Typed.getType.

Returns the data type.

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.

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.

protected boolean

Returns:

whether operation is deterministic and all arguments are constants
optimizeArguments
(SessionLocal
the session
session
,
boolean
whether operation is deterministic
allConst
)

Optimizes arguments.

public void
setEvaluatable(TableFilter
the table filter
tableFilter
,
boolean
true if the table filter can return value
value
)

Implements abstract org.h2.expression.Expression.setEvaluatable.

Tell the expression columns whether the table filter can return values now.

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.Expression:
addFilterConditionscreateIndexConditionsgetAliasgetBooleanValuegetColumnNamegetColumnNameForViewgetEnclosedSQLgetNonAliasExpressiongetNotIfPossiblegetNullablegetSchemaNamegetSQLgetSQLgetSQLgetSQLgetTableAliasgetTableNamegetTypeIfStaticallyKnowngetUnenclosedSQLgetValuegetWhenSQLgetWhenValueisConstantisIdentityisNullConstantisValueSetisWhenConditionOperandneedParenthesesoptimizeoptimizeConditiontoStringwriteExpressionswriteExpressions

Field Detail

argsback to summary
protected Expression[] args

The array of arguments.

argsCountback to summary
protected int argsCount

The number of arguments.

typeback to summary
protected TypeInfo type

The type of the result.

Constructor Detail

OperationNback to summary
protected OperationN(Expression[] args)

Method Detail

addParameterback to summary
public void addParameter(Expression param)

Implements org.h2.expression.ExpressionWithVariableParameters.addParameter.

Doc from org.h2.expression.ExpressionWithVariableParameters.addParameter.

Adds the parameter expression.

Parameters
param:Expression

the expression

Annotations
@Override
doneWithParametersback to summary
public void doneWithParameters() throws DbException

Implements org.h2.expression.ExpressionWithVariableParameters.doneWithParameters.

Doc from org.h2.expression.ExpressionWithVariableParameters.doneWithParameters.

This method must be called after all the parameters have been set. It checks if the parameter count is correct when required by the implementation.

Annotations
@Override
Exceptions
DbException:
if the parameter count is incorrect.
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
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
getTypeback to summary
public TypeInfo getType()

Implements abstract org.h2.expression.Expression.getType.

Implements org.h2.value.Typed.getType.

Doc from org.h2.expression.Expression.getType.

Returns the data type. The data type may be unknown before the optimization phase.

Returns:TypeInfo

the data type

Annotations
@Override
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
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
optimizeArgumentsback to summary
protected boolean optimizeArguments(SessionLocal session, boolean allConst)

Optimizes arguments.

Parameters
session:SessionLocal

the session

allConst:boolean

whether operation is deterministic

Returns:boolean

whether operation is deterministic and all arguments are constants

setEvaluatableback to summary
public void setEvaluatable(TableFilter tableFilter, boolean value)

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

value:boolean

true if the table filter can return value

Annotations
@Override
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