org.apache.calcite.avatica

## Class AvaticaStatement

- java.lang.Object
- - org.apache.calcite.avatica.AvaticaStatement

All Implemented Interfaces:
  AutoCloseable, Statement, Wrapper

Direct Known Subclasses:
  AvaticaJdbc41Factory.AvaticaJdbc41Statement, AvaticaPreparedStatement

    public abstract class AvaticaStatement
    extends Object
    implements Statement

Implementation of `Statement` for the Avatica engine.

### Field Summary

Fields
`private List<String>` `batchedSql`
`protected AtomicBoolean` `cancelFlag` Support for `cancel()` method.
`protected boolean` `closed`
`protected boolean` `closeOnCompletion` Support for `closeOnCompletion()` method.
`AvaticaConnection` `connection`
`static int` `DEFAULT_FETCH_SIZE` The default value for `Statement.getFetchSize()`.
`private int` `fetchDirection`
`private int` `fetchSize`
`Meta.StatementHandle` `handle` Statement id; unique within connection.
`protected long` `maxRowCount`
`protected AvaticaResultSet` `openResultSet` Current result set, or null if the statement is not executing anything.
`private int` `queryTimeoutMillis`
`(package private) int` `resultSetConcurrency`
`(package private) int` `resultSetHoldability`
`(package private) int` `resultSetType`
`private Meta.Signature` `signature`
`protected long` `updateCount` Current update count.

### Fields inherited from interface java.sql.Statement

`CLOSE_ALL_RESULTS, CLOSE_CURRENT_RESULT, EXECUTE_FAILED, KEEP_CURRENT_RESULT, NO_GENERATED_KEYS, RETURN_GENERATED_KEYS, SUCCESS_NO_INFO`

### Constructor Summary

Constructors
`protected` `AvaticaStatement(AvaticaConnection connection, Meta.StatementHandle h, int resultSetType, int resultSetConcurrency, int resultSetHoldability)` Creates an AvaticaStatement.
`protected` `AvaticaStatement(AvaticaConnection connection, Meta.StatementHandle h, int resultSetType, int resultSetConcurrency, int resultSetHoldability, Meta.Signature signature)`

### Method Summary

Methods
`void` `addBatch(String sql)`
`void` `cancel()`
`private void` `checkNotPreparedOrCallable(String s)`
`void` `clearBatch()`
`void` `clearWarnings()`
`protected void` `close_()`
`void` `close()`
`void` `closeOnCompletion()`
`boolean` `execute(String sql)`
`boolean` `execute(String sql, int autoGeneratedKeys)`
`boolean` `execute(String sql, int[] columnIndexes)`
`boolean` `execute(String sql, String[] columnNames)`
`int[]` `executeBatch()`
`protected long[]` `executeBatchInternal()` Executes a collection of updates in a single batch RPC.
`protected boolean` `executeInternal(Meta.Signature signature, boolean isUpdate)` Executes a prepared statement.
`protected void` `executeInternal(String sql)`
`long[]` `executeLargeBatch()`
`long` `executeLargeUpdate(String sql)`
`ResultSet` `executeQuery(String sql)`
`protected ResultSet` `executeQueryInternal(Meta.Signature signature, boolean isUpdate)` Executes a prepared query, closing any previously open result set.
`int` `executeUpdate(String sql)`
`int` `executeUpdate(String sql, int autoGeneratedKeys)`
`int` `executeUpdate(String sql, int[] columnIndexes)`
`int` `executeUpdate(String sql, String[] columnNames)`
`protected List<TypedValue>` `getBoundParameterValues()` Returns a list of bound parameter values.
`AvaticaConnection` `getConnection()`
`int` `getFetchDirection()`
`int` `getFetchSize()`
`ResultSet` `getGeneratedKeys()`
`int` `getId()` Returns the identifier of the statement, unique within its connection.
`long` `getLargeMaxRows()`
`long` `getLargeUpdateCount()`
`int` `getMaxFieldSize()`
`int` `getMaxRows()`
`boolean` `getMoreResults()`
`boolean` `getMoreResults(int current)`
`protected List<TypedValue>` `getParameterValues()` Returns the list of values of this statement's parameters.
`int` `getQueryTimeout()`
`(package private) int` `getQueryTimeoutMillis()`
`ResultSet` `getResultSet()`
`int` `getResultSetConcurrency()`
`int` `getResultSetHoldability()`
`int` `getResultSetType()`
`protected Meta.Signature` `getSignature()`
`Meta.StatementType` `getStatementType()`
`int` `getUpdateCount()`
`SQLWarning` `getWarnings()`
`boolean` `isClosed()`
`boolean` `isCloseOnCompletion()`
`boolean` `isPoolable()`
`boolean` `isWrapperFor(Class<?> iface)`
`(package private) void` `onResultSetClose(ResultSet resultSet)` Called by each child result set when it is closed.
`protected void` `resetStatement()`
`void` `setCursorName(String name)`
`void` `setEscapeProcessing(boolean enable)`
`void` `setFetchDirection(int direction)`
`void` `setFetchSize(int rows)`
`void` `setLargeMaxRows(long maxRowCount)`
`void` `setMaxFieldSize(int max)`
`void` `setMaxRows(int maxRowCount)`
`void` `setPoolable(boolean poolable)`
`void` `setQueryTimeout(int seconds)`
`(package private) void` `setQueryTimeoutMillis(int millis)`
`protected void` `setSignature(Meta.Signature signature)`
`protected boolean` `syncResults(QueryState state, long offset)` Re-initialize the ResultSet on the server with the given state.
`<T> T` `unwrap(Class<T> iface)`

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

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

### Field Detail

#### DEFAULT_FETCH_SIZE

    public static final int DEFAULT_FETCH_SIZE

The default value for `Statement.getFetchSize()`.

See Also:
  Constant Field Values

#### connection

    public final AvaticaConnection connection

#### handle

    public Meta.StatementHandle handle

Statement id; unique within connection.

#### closed

    protected boolean closed

#### cancelFlag

    protected final AtomicBoolean cancelFlag

Support for `cancel()` method.

#### closeOnCompletion

    protected boolean closeOnCompletion

Support for `closeOnCompletion()` method.

#### openResultSet

    protected AvaticaResultSet openResultSet

Current result set, or null if the statement is not executing anything. Any method which modifies this member must synchronize on the AvaticaStatement.

#### updateCount

    protected long updateCount

Current update count. Same lifecycle as `openResultSet`.

#### queryTimeoutMillis

    private int queryTimeoutMillis

#### resultSetType

    final int resultSetType

#### resultSetConcurrency

    final int resultSetConcurrency

#### resultSetHoldability

    final int resultSetHoldability

#### fetchSize

    private int fetchSize

#### fetchDirection

    private int fetchDirection

#### maxRowCount

    protected long maxRowCount

#### signature

    private Meta.Signature signature

#### batchedSql

    private final List<String> batchedSql

### Constructor Detail

#### AvaticaStatement

    protected AvaticaStatement(AvaticaConnection connection,
                    Meta.StatementHandle h,
                    int resultSetType,
                    int resultSetConcurrency,
                    int resultSetHoldability)

Creates an AvaticaStatement.

Parameters:
  `connection` - Connection
  `h` - Statement handle
  `resultSetType` - Result set type
  `resultSetConcurrency` - Result set concurrency
  `resultSetHoldability` - Result set holdability

#### AvaticaStatement

    protected AvaticaStatement(AvaticaConnection connection,
                    Meta.StatementHandle h,
                    int resultSetType,
                    int resultSetConcurrency,
                    int resultSetHoldability,
                    Meta.Signature signature)

### Method Detail

#### setSignature

    protected void setSignature(Meta.Signature signature)

#### getSignature

    protected Meta.Signature getSignature()

#### getStatementType

    public Meta.StatementType getStatementType()

#### getId

    public int getId()

Returns the identifier of the statement, unique within its connection.

#### checkNotPreparedOrCallable

    private void checkNotPreparedOrCallable(String s)
                                     throws SQLException

Throws:
  `SQLException`

#### executeInternal

    protected void executeInternal(String sql)
                            throws SQLException

Throws:
  `SQLException`

#### executeBatchInternal

    protected long[] executeBatchInternal()
                                   throws SQLException

Executes a collection of updates in a single batch RPC.

Returns:
  an array of long mapping to the update count per SQL command.
Throws:
  `SQLException`

#### resetStatement

    protected void resetStatement()

#### syncResults

    protected boolean syncResults(QueryState state,
                      long offset)
                           throws NoSuchStatementException

Re-initialize the ResultSet on the server with the given state.

Parameters:
  `state` - The ResultSet's state.
  `offset` - Offset into the desired ResultSet
Returns:
  True if the ResultSet has more results, false if there are no more results.
Throws:
  `NoSuchStatementException`

#### execute

    public boolean execute(String sql)
                    throws SQLException

Specified by:
  `execute` in interface `Statement`
Throws:
  `SQLException`

#### executeQuery

    public ResultSet executeQuery(String sql)
                           throws SQLException

Specified by:
  `executeQuery` in interface `Statement`
Throws:
  `SQLException`

#### executeUpdate

    public final int executeUpdate(String sql)
                            throws SQLException

Specified by:
  `executeUpdate` in interface `Statement`
Throws:
  `SQLException`

#### executeLargeUpdate

    public long executeLargeUpdate(String sql)
                            throws SQLException

Throws:
  `SQLException`

#### close

    public void close()
               throws SQLException

Specified by:
  `close` in interface `AutoCloseable`
Specified by:
  `close` in interface `Statement`
Throws:
  `SQLException`

#### close_

    protected void close_()

#### getMaxFieldSize

    public int getMaxFieldSize()
                        throws SQLException

Specified by:
  `getMaxFieldSize` in interface `Statement`
Throws:
  `SQLException`

#### setMaxFieldSize

    public void setMaxFieldSize(int max)
                         throws SQLException

Specified by:
  `setMaxFieldSize` in interface `Statement`
Throws:
  `SQLException`

#### getMaxRows

    public final int getMaxRows()

Specified by:
  `getMaxRows` in interface `Statement`

#### getLargeMaxRows

    public long getLargeMaxRows()

#### setMaxRows

    public final void setMaxRows(int maxRowCount)
                          throws SQLException

Specified by:
  `setMaxRows` in interface `Statement`
Throws:
  `SQLException`

#### setLargeMaxRows

    public void setLargeMaxRows(long maxRowCount)
                         throws SQLException

Throws:
  `SQLException`

#### setEscapeProcessing

    public void setEscapeProcessing(boolean enable)
                             throws SQLException

Specified by:
  `setEscapeProcessing` in interface `Statement`
Throws:
  `SQLException`

#### getQueryTimeout

    public int getQueryTimeout()
                        throws SQLException

Specified by:
  `getQueryTimeout` in interface `Statement`
Throws:
  `SQLException`

#### getQueryTimeoutMillis

    int getQueryTimeoutMillis()

#### setQueryTimeout

    public void setQueryTimeout(int seconds)
                         throws SQLException

Specified by:
  `setQueryTimeout` in interface `Statement`
Throws:
  `SQLException`

#### setQueryTimeoutMillis

    void setQueryTimeoutMillis(int millis)

#### cancel

    public void cancel()
                throws SQLException

Specified by:
  `cancel` in interface `Statement`
Throws:
  `SQLException`

#### getWarnings

    public SQLWarning getWarnings()
                           throws SQLException

Specified by:
  `getWarnings` in interface `Statement`
Throws:
  `SQLException`

#### clearWarnings

    public void clearWarnings()
                       throws SQLException

Specified by:
  `clearWarnings` in interface `Statement`
Throws:
  `SQLException`

#### setCursorName

    public void setCursorName(String name)
                       throws SQLException

Specified by:
  `setCursorName` in interface `Statement`
Throws:
  `SQLException`

#### getResultSet

    public ResultSet getResultSet()
                           throws SQLException

Specified by:
  `getResultSet` in interface `Statement`
Throws:
  `SQLException`

#### getUpdateCount

    public int getUpdateCount()
                       throws SQLException

Specified by:
  `getUpdateCount` in interface `Statement`
Throws:
  `SQLException`

#### getLargeUpdateCount

    public long getLargeUpdateCount()
                             throws SQLException

Throws:
  `SQLException`

#### getMoreResults

    public boolean getMoreResults()
                           throws SQLException

Specified by:
  `getMoreResults` in interface `Statement`
Throws:
  `SQLException`

#### setFetchDirection

    public void setFetchDirection(int direction)
                           throws SQLException

Specified by:
  `setFetchDirection` in interface `Statement`
Throws:
  `SQLException`

#### getFetchDirection

    public int getFetchDirection()

Specified by:
  `getFetchDirection` in interface `Statement`

#### setFetchSize

    public void setFetchSize(int rows)
                      throws SQLException

Specified by:
  `setFetchSize` in interface `Statement`
Throws:
  `SQLException`

#### getFetchSize

    public int getFetchSize()

Specified by:
  `getFetchSize` in interface `Statement`

#### getResultSetConcurrency

    public int getResultSetConcurrency()
                                throws SQLException

Specified by:
  `getResultSetConcurrency` in interface `Statement`
Throws:
  `SQLException`

#### getResultSetType

    public int getResultSetType()
                         throws SQLException

Specified by:
  `getResultSetType` in interface `Statement`
Throws:
  `SQLException`

#### addBatch

    public void addBatch(String sql)
                  throws SQLException

Specified by:
  `addBatch` in interface `Statement`
Throws:
  `SQLException`

#### clearBatch

    public void clearBatch()
                    throws SQLException

Specified by:
  `clearBatch` in interface `Statement`
Throws:
  `SQLException`

#### executeBatch

    public int[] executeBatch()
                       throws SQLException

Specified by:
  `executeBatch` in interface `Statement`
Throws:
  `SQLException`

#### executeLargeBatch

    public long[] executeLargeBatch()
                             throws SQLException

Throws:
  `SQLException`

#### getConnection

    public AvaticaConnection getConnection()

Specified by:
  `getConnection` in interface `Statement`

#### getMoreResults

    public boolean getMoreResults(int current)
                           throws SQLException

Specified by:
  `getMoreResults` in interface `Statement`
Throws:
  `SQLException`

#### getGeneratedKeys

    public ResultSet getGeneratedKeys()
                               throws SQLException

Specified by:
  `getGeneratedKeys` in interface `Statement`
Throws:
  `SQLException`

#### executeUpdate

    public int executeUpdate(String sql,
                    int autoGeneratedKeys)
                      throws SQLException

Specified by:
  `executeUpdate` in interface `Statement`
Throws:
  `SQLException`

#### executeUpdate

    public int executeUpdate(String sql,
                    int[] columnIndexes)
                      throws SQLException

Specified by:
  `executeUpdate` in interface `Statement`
Throws:
  `SQLException`

#### executeUpdate

    public int executeUpdate(String sql,
                    String[] columnNames)
                      throws SQLException

Specified by:
  `executeUpdate` in interface `Statement`
Throws:
  `SQLException`

#### execute

    public boolean execute(String sql,
                  int autoGeneratedKeys)
                    throws SQLException

Specified by:
  `execute` in interface `Statement`
Throws:
  `SQLException`

#### execute

    public boolean execute(String sql,
                  int[] columnIndexes)
                    throws SQLException

Specified by:
  `execute` in interface `Statement`
Throws:
  `SQLException`

#### execute

    public boolean execute(String sql,
                  String[] columnNames)
                    throws SQLException

Specified by:
  `execute` in interface `Statement`
Throws:
  `SQLException`

#### getResultSetHoldability

    public int getResultSetHoldability()
                                throws SQLException

Specified by:
  `getResultSetHoldability` in interface `Statement`
Throws:
  `SQLException`

#### isClosed

    public boolean isClosed()
                     throws SQLException

Specified by:
  `isClosed` in interface `Statement`
Throws:
  `SQLException`

#### setPoolable

    public void setPoolable(boolean poolable)
                     throws SQLException

Specified by:
  `setPoolable` in interface `Statement`
Throws:
  `SQLException`

#### isPoolable

    public boolean isPoolable()
                       throws SQLException

Specified by:
  `isPoolable` in interface `Statement`
Throws:
  `SQLException`

#### closeOnCompletion

    public void closeOnCompletion()
                           throws SQLException

Specified by:
  `closeOnCompletion` in interface `Statement`
Throws:
  `SQLException`

#### isCloseOnCompletion

    public boolean isCloseOnCompletion()
                                throws SQLException

Specified by:
  `isCloseOnCompletion` in interface `Statement`
Throws:
  `SQLException`

#### unwrap

    public <T> T unwrap(Class<T> iface)
             throws SQLException

Specified by:
  `unwrap` in interface `Wrapper`
Throws:
  `SQLException`

#### isWrapperFor

    public boolean isWrapperFor(Class<?> iface)
                         throws SQLException

Specified by:
  `isWrapperFor` in interface `Wrapper`
Throws:
  `SQLException`

#### executeInternal

    protected boolean executeInternal(Meta.Signature signature,
                          boolean isUpdate)
                               throws SQLException

Executes a prepared statement.

Parameters:
  `signature` - Parsed statement
  `isUpdate` - if the execute is for an update
Returns:
  as specified by `Statement.execute(String)`
Throws:
  `SQLException` - if a database error occurs

#### executeQueryInternal

    protected ResultSet executeQueryInternal(Meta.Signature signature,
                                 boolean isUpdate)
                                      throws SQLException

Executes a prepared query, closing any previously open result set.

Parameters:
  `signature` - Parsed query
  `isUpdate` - If the execute is for an update
Returns:
  Result set
Throws:
  `SQLException` - if a database error occurs

#### onResultSetClose

    void onResultSetClose(ResultSet resultSet)

Called by each child result set when it is closed.

Parameters:
  `resultSet` - Result set or cell set

#### getParameterValues

    protected List<TypedValue> getParameterValues()

Returns the list of values of this statement's parameters.

Called at execute time. Not a public API.

The default implementation returns the empty list, because non-prepared statements have no parameters.

See Also:
  `AvaticaConnection.Trojan.getParameterValues(AvaticaStatement)`

#### getBoundParameterValues

    protected List<TypedValue> getBoundParameterValues()
                                                throws SQLException

Returns a list of bound parameter values.

If any of the parameters have not been bound, throws. If parameters have been bound to null, the value in the list is null.

Throws:
  `SQLException`