com.amazon.redshift.core.v3

## Class BatchedQuery

- java.lang.Object
- - com.amazon.redshift.core.v3.BatchedQuery

All Implemented Interfaces:
  Query

    public class BatchedQuery
    extends Object

Purpose of this object is to support batched query re write behaviour. Responsibility for tracking the batch size and implement the clean up of the query fragments after the batch execute is complete. Intended to be used to wrap a Query that is present in the batchStatements collection.

Author:
  Jeremy Whiting jwhiting@redhat.com, Christopher Deckers (chrriis@gmail.com)

### Field Summary

Fields
`protected RedshiftLogger` `logger`

### Constructor Summary

Constructors
Constructor and Description
`BatchedQuery(NativeQuery query, TypeTransferModeRegistry transferModeRegistry, int valuesBraceOpenPosition, int valuesBraceClosePosition, boolean sanitiserDisabled, RedshiftLogger logger)`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `close()` Close this query and free any server-side resources associated with it.
`ParameterList` `createParameterList()` Create a ParameterList suitable for storing parameters associated with this Query.
`BatchedQuery` `deriveForMultiBatch(int valueBlock, int maxBlockCount, RedshiftLogger logger)`
`int` `getBatchSize()` Get the number of times this Query has been batched.
`int` `getBindCount()`
`int` `getMaxResultRowSize()` Return maximum size in bytes that each result row from this query may return.
`String` `getNativeSql()` Method to return the sql based on number of batches.
`Map<String,Integer>` `getResultSetColumnNameIndexMap()` Get a map that a result set can use to find the index associated to a name.
`SqlCommand` `getSqlCommand()` Returns properties of the query (sql keyword, and some other parsing info).
`com.amazon.redshift.core.v3.SimpleQuery[]` `getSubqueries()` Return a list of the Query objects that make up this query.
`boolean` `hasBinaryFields()`
`boolean` `isEmpty()`
`boolean` `isStatementDescribed()`
`void` `resetNeedUpdateFieldFormats()`
`void` `setHasBinaryFields(boolean hasBinaryFields)`
`String` `toString()`
`String` `toString(ParameterList params)` Stringize this query to a human-readable form, substituting particular parameter values for parameter placeholders.

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

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

### Field Detail

#### logger

    protected RedshiftLogger logger

### Constructor Detail

#### BatchedQuery

    public BatchedQuery(NativeQuery query,
                        TypeTransferModeRegistry transferModeRegistry,
                        int valuesBraceOpenPosition,
                        int valuesBraceClosePosition,
                        boolean sanitiserDisabled,
                        RedshiftLogger logger)

### Method Detail

#### deriveForMultiBatch

    public BatchedQuery deriveForMultiBatch(int valueBlock,
                                            int maxBlockCount,
                                            RedshiftLogger logger)

#### getBatchSize

    public int getBatchSize()

Description copied from interface: `Query`
Get the number of times this Query has been batched.

Specified by:
  `getBatchSize` in interface `Query`
Returns:
  number of times `addBatch()` has been called.

#### getNativeSql

    public String getNativeSql()

Method to return the sql based on number of batches. Skipping the initial batch.

Specified by:
  `getNativeSql` in interface `Query`
Returns:
  SQL in native for database format

#### toString

    public String toString(ParameterList params)

Description copied from interface: `Query`
Stringize this query to a human-readable form, substituting particular parameter values for parameter placeholders.

Specified by:
  `toString` in interface `Query`
Parameters:
  `params` - a ParameterList returned by this Query's `Query.createParameterList()` method, or `null` to leave the parameter placeholders unsubstituted.
Returns:
  a human-readable representation of this query

#### createParameterList

    public ParameterList createParameterList()

Description copied from interface: `Query`

Create a ParameterList suitable for storing parameters associated with this Query.

If this query has no parameters, a ParameterList will be returned, but it may be a shared immutable object. If this query does have parameters, the returned ParameterList is a new list, unshared by other callers.

Specified by:
  `createParameterList` in interface `Query`
Returns:
  a suitable ParameterList instance for this query

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`

#### close

    public void close()

Description copied from interface: `Query`

Close this query and free any server-side resources associated with it. The resources may not be immediately deallocated, but closing a Query may make the deallocation more prompt.

A closed Query should not be executed.

Specified by:
  `close` in interface `Query`

#### getSubqueries

    public com.amazon.redshift.core.v3.SimpleQuery[] getSubqueries()

Description copied from interface: `Query`
Return a list of the Query objects that make up this query. If this object is already a SimpleQuery, returns null (avoids an extra array construction in the common case).

Specified by:
  `getSubqueries` in interface `Query`
Returns:
  an array of single-statement queries, or `null` if this object is already a single-statement query.

#### getMaxResultRowSize

    public int getMaxResultRowSize()

Return maximum size in bytes that each result row from this query may return. Mainly used for batches that return results.

Results are cached until/unless the query is re-described.

Returns:
  Max size of result data in bytes according to returned fields, 0 if no results, -1 if result is unbounded.
Throws:
  `IllegalStateException` - if the query is not described

#### resetNeedUpdateFieldFormats

    public void resetNeedUpdateFieldFormats()

#### hasBinaryFields

    public boolean hasBinaryFields()

#### setHasBinaryFields

    public void setHasBinaryFields(boolean hasBinaryFields)

#### isStatementDescribed

    public boolean isStatementDescribed()

Specified by:
  `isStatementDescribed` in interface `Query`

#### isEmpty

    public boolean isEmpty()

Specified by:
  `isEmpty` in interface `Query`

#### getBindCount

    public final int getBindCount()

#### getResultSetColumnNameIndexMap

    public Map<String,Integer> getResultSetColumnNameIndexMap()

Description copied from interface: `Query`
Get a map that a result set can use to find the index associated to a name.

Specified by:
  `getResultSetColumnNameIndexMap` in interface `Query`
Returns:
  null if the query implementation does not support this method.

#### getSqlCommand

    public SqlCommand getSqlCommand()

Description copied from interface: `Query`
Returns properties of the query (sql keyword, and some other parsing info).

Specified by:
  `getSqlCommand` in interface `Query`
Returns:
  returns properties of the query (sql keyword, and some other parsing info) or null if not applicable