org.h2.command.dml

## Class SelectUnion

- java.lang.Object
- - org.h2.command.Prepared
  - - org.h2.command.dml.Query
    - - org.h2.command.dml.SelectUnion

    public class SelectUnion
    extends Query

Represents a union SELECT statement.

### Field Summary

Fields
`static int` `EXCEPT` The type of an EXCEPT statement.
`static int` `INTERSECT` The type of an INTERSECT statement.
`static int` `UNION` The type of a UNION statement.
`static int` `UNION_ALL` The type of a UNION ALL statement.

### Fields inherited from class org.h2.command.dml.Query

`distinct, limitExpr, offsetExpr, randomAccessResult, sampleSizeExpr`

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

`create, parameters, prepareAlways, session, sqlStatement`

### Constructor Summary

Constructors
Constructor and Description
`SelectUnion(Session session, Query query)`

### Method Summary

Methods
`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.
`int` `getColumnCount()` Get the column count of this query.
`double` `getCost()` Calculate the cost to execute this query.
`LocalResult` `getEmptyResult()`
`java.util.ArrayList<Expression>` `getExpressions()` The the list of select expressions.
`Query` `getLeft()`
`java.lang.String` `getPlanSQL()` Get the SQL statement with the execution plan.
`Query` `getRight()`
`java.util.HashSet<Table>` `getTables()` Get all tables that are involved in this query.
`int` `getType()` Get the command type as defined in CommandInterface
`int` `getUnionType()`
`boolean` `hasOrder()` Whether the query has an order.
`void` `init()` Initialize the query.
`boolean` `isEverything(ExpressionVisitor visitor)` Check if this expression and all sub-expressions can fulfill a criteria.
`boolean` `isReadOnly()` Check if this command is read only.
`boolean` `isUnion()` Check if this is a UNION query.
`void` `mapColumns(ColumnResolver resolver, int level)` Map the columns to the given column resolver.
`void` `prepare()` Prepare this statement.
`void` `prepareJoinBatch()` Prepare join batching.
`LocalResult` `query(int limit, ResultTarget target)` Execute the query, writing the result to the target result.
`ResultInterface` `queryMeta()` Get an empty result set containing the meta data.
`protected LocalResult` `queryWithoutCache(int maxRows, ResultTarget target)` Execute the query without checking the cache.
`void` `setEvaluatable(TableFilter tableFilter, boolean b)` Change the evaluatable flag.
`void` `setForUpdate(boolean forUpdate)` Set the 'for update' flag.
`void` `setOrder(java.util.ArrayList<SelectOrderBy> order)` Set the order by list.
`void` `setRight(Query select)`
`void` `setSQL(java.lang.String sql)` Set the SQL statement.
`void` `setUnionType(int type)`
`void` `updateAggregate(Session s)` Update all aggregate function values.

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

`disableCache, getCostAsExpression, getLimit, getMaxDataModificationId, getOffset, getParameterValues, isDistinct, isQuery, isTransactional, prepareOrder, query, setDistinct, setLimit, setOffset, setRandomAccessResult, setSampleSize`

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

`checkCanceled, checkParameters, getCurrentObjectId, getCurrentRowNumber, getObjectId, getParameters, getSQL, getSQL, getSQL, isCacheable, needRecompile, setCommand, setCurrentRowNumber, setObjectId, setParameterList, setPrepareAlways, setRow, setSession, toString, update`

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

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

### Field Detail

#### UNION

    public static final int UNION

The type of a UNION statement.

See Also:
  Constant Field Values

#### UNION_ALL

    public static final int UNION_ALL

The type of a UNION ALL statement.

See Also:
  Constant Field Values

#### EXCEPT

    public static final int EXCEPT

The type of an EXCEPT statement.

See Also:
  Constant Field Values

#### INTERSECT

    public static final int INTERSECT

The type of an INTERSECT statement.

See Also:
  Constant Field Values

### Constructor Detail

#### SelectUnion

    public SelectUnion(Session session,
               Query query)

### Method Detail

#### 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

#### prepareJoinBatch

    public void prepareJoinBatch()

Description copied from class: `Query`
Prepare join batching.

Specified by:
  `prepareJoinBatch` in class `Query`

#### setUnionType

    public void setUnionType(int type)

#### getUnionType

    public int getUnionType()

#### setRight

    public void setRight(Query select)

#### getLeft

    public Query getLeft()

#### getRight

    public Query getRight()

#### setSQL

    public void setSQL(java.lang.String sql)

Description copied from class: `Prepared`
Set the SQL statement.

Overrides:
  `setSQL` in class `Prepared`
Parameters:
  `sql` - the SQL statement

#### setOrder

    public void setOrder(java.util.ArrayList<SelectOrderBy> order)

Description copied from class: `Query`
Set the order by list.

Specified by:
  `setOrder` in class `Query`
Parameters:
  `order` - the order by list

#### hasOrder

    public boolean hasOrder()

Description copied from class: `Query`
Whether the query has an order.

Specified by:
  `hasOrder` in class `Query`
Returns:
  true if it has

#### queryMeta

    public ResultInterface queryMeta()

Description copied from class: `Prepared`
Get an empty result set containing the meta data.

Specified by:
  `queryMeta` in class `Prepared`
Returns:
  the result set

#### getEmptyResult

    public LocalResult getEmptyResult()

#### queryWithoutCache

    protected LocalResult queryWithoutCache(int 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`

#### prepare

    public void prepare()

Description copied from class: `Prepared`
Prepare this statement.

Overrides:
  `prepare` in class `Prepared`

#### 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 java.util.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

#### getExpressions

    public java.util.ArrayList<Expression> getExpressions()

Description copied from class: `Query`
The the list of select expressions. This may include invisible expressions such as order by expressions.

Specified by:
  `getExpressions` in class `Query`
Returns:
  the list of expressions

#### setForUpdate

    public void setForUpdate(boolean forUpdate)

Description copied from class: `Query`
Set the 'for update' flag.

Specified by:
  `setForUpdate` in class `Query`
Parameters:
  `forUpdate` - the new setting

#### getColumnCount

    public int getColumnCount()

Description copied from class: `Query`
Get the column count of this query.

Specified by:
  `getColumnCount` in class `Query`
Returns:
  the column count

#### mapColumns

    public void mapColumns(ColumnResolver resolver,
                  int level)

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)

#### 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 java.lang.String getPlanSQL()

Description copied from class: `Prepared`
Get the SQL statement with the execution plan.

Overrides:
  `getPlanSQL` in class `Prepared`
Returns:
  the execution plan

#### query

    public LocalResult query(int limit,
                    ResultTarget target)

Description copied from class: `Query`
Execute the query, writing the result to the target result.

Parameters:
  `limit` - the maximum number of rows to return
  `target` - the target result (null will return the result)
Returns:
  the result set (if the target is not set).

#### 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

#### isReadOnly

    public boolean isReadOnly()

Description copied from class: `Prepared`
Check if this command is read only.

Overrides:
  `isReadOnly` in class `Prepared`
Returns:
  true if it is

#### updateAggregate

    public void updateAggregate(Session s)

Description copied from class: `Query`
Update all aggregate function values.

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

#### fireBeforeSelectTriggers

    public void fireBeforeSelectTriggers()

Description copied from class: `Query`
Call the before triggers on all tables.

Specified by:
  `fireBeforeSelectTriggers` in class `Query`

#### getType

    public int getType()

Description copied from class: `Prepared`
Get the command type as defined in CommandInterface

Specified by:
  `getType` in class `Prepared`
Returns:
  the statement type

#### 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