Top Description Fields Constructors Methods
org.h2.expression

public final Class Subquery

extends Expression
Class Inheritance
Imports
java.util.ArrayList, .Arrays, .HashSet, org.h2.api.ErrorCode, org.h2.command.query.Query, org.h2.engine.SessionLocal, org.h2.message.DbException, org.h2.result.ResultInterface, org.h2.table.ColumnResolver, .TableFilter, org.h2.value.ExtTypeInfoRow, .TypeInfo, .Value, .ValueNull, .ValueRow

A query returning a single value. Subqueries are used inside other statements.

Field Summary

Modifier and TypeField and Description
private Expression
private Value
private HashSet<ColumnResolver>
private final Query
Inherited from org.h2.expression.Expression:
AUTO_PARENTHESESMAP_IN_AGGREGATEMAP_IN_WINDOWMAP_INITIALWITH_PARENTHESESWITHOUT_PARENTHESES

Constructor Summary

AccessConstructor and Description
public
Subquery(Query query)

Method Summary

Modifier and TypeMethod and Description
public ArrayList<Value>

Returns:

values in all rows
getAllRows
(SessionLocal
the session
session
)

Evaluates and returns all rows of the subquery.

public int
getCost()

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

Estimate the cost to process the expression.

public Query
public TypeInfo
getType()

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

Implements org.h2.value.Typed.getType.

Returns the data type.

public TypeInfo
getTypeIfStaticallyKnown(SessionLocal
the session
session
)

Overrides org.h2.expression.Expression.getTypeIfStaticallyKnown.

Returns data type of this expression if it is statically known.

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.

public boolean
isConstant()

Overrides org.h2.expression.Expression.isConstant.

Check if this expression will always return the same value.

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.

public Expression
optimize(SessionLocal
the session
session
)

Implements abstract org.h2.expression.Expression.optimize.

Try to optimize the expression.

private Value
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.

private void
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:
addFilterConditionscreateIndexConditionsgetAliasgetBooleanValuegetColumnNamegetColumnNameForViewgetEnclosedSQLgetNonAliasExpressiongetNotIfPossiblegetNullablegetSchemaNamegetSQLgetSQLgetSQLgetSQLgetSubexpressiongetSubexpressionCountgetTableAliasgetTableNamegetWhenSQLgetWhenValueisIdentityisNullConstantisValueSetisWhenConditionOperandneedParenthesesoptimizeConditiontoStringwriteExpressionswriteExpressions

Field Detail

expressionback to summary
private Expression expression
nullValueback to summary
private Value nullValue
outerResolversback to summary
private HashSet<ColumnResolver> outerResolvers
queryback to summary
private final Query query

Constructor Detail

Subqueryback to summary
public Subquery(Query query)

Method Detail

getAllRowsback to summary
public ArrayList<Value> getAllRows(SessionLocal session)

Evaluates and returns all rows of the subquery.

Parameters
session:SessionLocal

the session

Returns:ArrayList<Value>

values in all rows

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
getQueryback to summary
public Query getQuery()
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
getTypeIfStaticallyKnownback to summary
public TypeInfo getTypeIfStaticallyKnown(SessionLocal session)

Overrides org.h2.expression.Expression.getTypeIfStaticallyKnown.

Doc from org.h2.expression.Expression.getTypeIfStaticallyKnown.

Returns data type of this expression if it is statically known.

Parameters
session:SessionLocal

the session

Returns:TypeInfo

data type or null

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
isConstantback to summary
public boolean isConstant()

Overrides org.h2.expression.Expression.isConstant.

Doc from org.h2.expression.Expression.isConstant.

Check if this expression will always return the same value.

Returns:boolean

if the expression is constant

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
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
readRowback to summary
private Value readRow(ResultInterface result)
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
setTypeback to summary
private void setType()
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