Package org.h2.command.query

# Class SelectUnion

java.lang.Object
org.h2.command.Prepared
org.h2.command.query.Query
org.h2.command.query.SelectUnion

public class SelectUnion extends Query
Represents a union SELECT statement.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static enum`
`SelectUnion.UnionType`

## Field Summary

### Fields inherited from class org.h2.command.Prepared

`create, parameters, prepareAlways, session, sqlStatement, sqlTokens`

## Constructor Summary

Constructors
Constructor
Description
`SelectUnion(SessionLocal session, SelectUnion.UnionType unionType, Query query, Query right)`

## Method Summary

Modifier and Type
Method
Description
`void`
`addGlobalCondition(Parameter param, int columnId, int comparisonType)`
Add a condition to the query.
`boolean`
`allowGlobalConditions()`
Check whether adding condition to the query is allowed.
`void`
`fireBeforeSelectTriggers()`
Call the before triggers on all tables.
`double`
`getCost()`
Calculate the cost to execute this query.
`LocalResult`
`getEmptyResult()`
`ForUpdate`
`getForUpdate()`
Returns FOR UPDATE clause, if any.
`Query`
`getLeft()`
`StringBuilder`
`getPlanSQL(StringBuilder builder, int sqlFlags)`
Appends the SQL statement with the execution plan.
`Query`
`getRight()`
`HashSet<Table>`
`getTables()`
Get all tables that are involved in this query.
`SelectUnion.UnionType`
`getUnionType()`
`void`
`init()`
Initialize the query.
`boolean`
`isConstantQuery()`
Check if this query will always return the same value and has no side effects.
`boolean`
`isEverything(ExpressionVisitor visitor)`
Check if this expression and all sub-expressions can fulfill a criteria.
`boolean`
`isUnion()`
Check if this is a UNION query.
`void`
`mapColumns(ColumnResolver resolver, int level, boolean outer)`
Map the columns to the given column resolver.
`void`
`prepareExpressions()`
`void`
`preparePlan()`
`protected ResultInterface`
`queryWithoutCache(long maxRows, ResultTarget target)`
Execute the query without checking the cache.
`void`
`setEvaluatable(TableFilter tableFilter, boolean b)`
Change the evaluatable flag.
`void`
`setForUpdate(ForUpdate forUpdate)`
Set the FOR UPDATE clause.
`void`
`updateAggregate(SessionLocal s, int stage)`
Update all aggregate function values.

### Methods inherited from class org.h2.command.query.Query

`collectDependencies, disableCache, exists, getColumnCount, getCostAsExpression, getExpressions, getFetch, getIfSingleRow, getMaxDataModificationId, getOffset, getOuterQueryScope, getRowDataType, getType, hasOrder, invalidateCachedResult, isAnyDistinct, isFetchPercent, isInPredicateResult, isNeverLazy, isQuery, isReadOnly, isRetryable, isStandardDistinct, isTransactional, isWithTies, prepare, query, query, queryMeta, setDistinctIfPossible, setFetch, setFetchPercent, setInPredicateResult, setInPredicateResultSortTypes, setNeverLazy, setOffset, setOrder, setOuterQueryScope, setWithClause, setWithTies, toTable, writeWithList`

### Methods inherited from class org.h2.command.Prepared

`checkCanceled, checkParameters, getCurrentRowNumber, getDatabase, getObjectId, getParameters, getPersistedObjectId, getPlanSQL, getSession, getSimpleSQL, getSQL, getSQLTokens, isCacheable, isWithParamValues, needRecompile, setCommand, setCurrentRowNumber, setParameterList, setPersistedObjectId, setPrepareAlways, setRow, setSession, setSQL, setWithParamValues, toString, update`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### SelectUnion

public SelectUnion(SessionLocal session, SelectUnion.UnionType unionType, Query query, Query right)

## Method Details

### isUnion

public boolean isUnion()
Description copied from class: `Query`
Check if this is a UNION query.

Specified by:
  `isUnion` in class `Query`
Returns:
  `true` if this is a UNION query

### getUnionType

public SelectUnion.UnionType getUnionType()

### getLeft

public Query getLeft()

### getRight

public Query getRight()

### getEmptyResult

public LocalResult getEmptyResult()

### queryWithoutCache

protected ResultInterface queryWithoutCache(long maxRows, ResultTarget target)
Description copied from class: `Query`
Execute the query without checking the cache. If a target is specified, the results are written to it, and the method returns null. If no target is specified, a new LocalResult is created and returned.

Specified by:
  `queryWithoutCache` in class `Query`
Parameters:
  `maxRows` - the limit as specified in the JDBC method call
  `target` - the target to write results to
Returns:
  the result

### init

public void init()
Description copied from class: `Query`
Initialize the query.

Specified by:
  `init` in class `Query`

### prepareExpressions

public void prepareExpressions()

Specified by:
  `prepareExpressions` in class `Query`

### preparePlan

public void preparePlan()

Specified by:
  `preparePlan` in class `Query`

### getCost

public double getCost()
Description copied from class: `Query`
Calculate the cost to execute this query.

Specified by:
  `getCost` in class `Query`
Returns:
  the cost

### getTables

public HashSet<Table> getTables()
Description copied from class: `Query`
Get all tables that are involved in this query.

Specified by:
  `getTables` in class `Query`
Returns:
  the set of tables

### getForUpdate

public ForUpdate getForUpdate()
Description copied from class: `Query`
Returns FOR UPDATE clause, if any.

Overrides:
  `getForUpdate` in class `Query`
Returns:
  FOR UPDATE clause or `null`

### setForUpdate

public void setForUpdate(ForUpdate forUpdate)
Description copied from class: `Query`
Set the FOR UPDATE clause.

Specified by:
  `setForUpdate` in class `Query`
Parameters:
  `forUpdate` - the new FOR UPDATE clause

### mapColumns

public void mapColumns(ColumnResolver resolver, int level, boolean outer)
Description copied from class: `Query`
Map the columns to the given column resolver.

Specified by:
  `mapColumns` in class `Query`
Parameters:
  `resolver` - the resolver
  `level` - the subquery level (0 is the top level query, 1 is the first subquery level)
  `outer` - whether this method was called from the outer query

### setEvaluatable

public void setEvaluatable(TableFilter tableFilter, boolean b)
Description copied from class: `Query`
Change the evaluatable flag. This is used when building the execution plan.

Specified by:
  `setEvaluatable` in class `Query`
Parameters:
  `tableFilter` - the table filter
  `b` - the new value

### addGlobalCondition

public void addGlobalCondition(Parameter param, int columnId, int comparisonType)
Description copied from class: `Query`
Add a condition to the query. This is used for views.

Specified by:
  `addGlobalCondition` in class `Query`
Parameters:
  `param` - the parameter
  `columnId` - the column index (0 meaning the first column)
  `comparisonType` - the comparison type

### getPlanSQL

public StringBuilder getPlanSQL(StringBuilder builder, int sqlFlags)
Description copied from class: `Prepared`
Appends the SQL statement with the execution plan.

Overrides:
  `getPlanSQL` in class `Prepared`
Parameters:
  `builder` - string builder
  `sqlFlags` - formatting flags
Returns:
  the execution plan

### isEverything

public boolean isEverything(ExpressionVisitor visitor)
Description copied from class: `Query`
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 `Query`
Parameters:
  `visitor` - the visitor
Returns:
  if the criteria can be fulfilled

### updateAggregate

public void updateAggregate(SessionLocal s, int stage)
Description copied from class: `Query`
Update all aggregate function values.

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

### fireBeforeSelectTriggers

public void fireBeforeSelectTriggers()
Description copied from class: `Query`
Call the before triggers on all tables.

Specified by:
  `fireBeforeSelectTriggers` in class `Query`

### allowGlobalConditions

public boolean allowGlobalConditions()
Description copied from class: `Query`
Check whether adding condition to the query is allowed. This is not allowed for views that have an order by and a limit, as it would affect the returned results.

Specified by:
  `allowGlobalConditions` in class `Query`
Returns:
  true if adding global conditions is allowed

### isConstantQuery

public boolean isConstantQuery()
Description copied from class: `Query`
Check if this query will always return the same value and has no side effects.

Overrides:
  `isConstantQuery` in class `Query`
Returns:
  if this query will always return the same value and has no side effects.