Package org.apache.calcite.avatica

# Class AvaticaStatement

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

All Implemented Interfaces:
  `AutoCloseable`, `Statement`, `Wrapper`

Direct Known Subclasses:
  `AvaticaPreparedStatement`

public abstract class AvaticaStatement extends Object implements Statement
Implementation of `Statement` for the Avatica engine.

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final AtomicBoolean`
`cancelFlag`
Support for `cancel()` method.
`protected boolean`
`closed`
`protected boolean`
`closeOnCompletion`
Support for `closeOnCompletion()` method.
`final AvaticaConnection`
`connection`
`static final int`
`DEFAULT_FETCH_SIZE`
The default value for `Statement.getFetchSize()`.
`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.
`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
Modifier
Constructor
Description
`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

Modifier and Type
Method
Description
`void`
`addBatch(String sql)`
`void`
`cancel()`
`protected void`
`checkOpen()`
`void`
`clearBatch()`
`void`
`clearWarnings()`
`void`
`close()`
`protected 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 void`
`executeInternal(String sql)`
`protected boolean`
`executeInternal(Meta.Signature signature, boolean isUpdate)`
Executes a prepared statement.
`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.
`final 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()`
`final int`
`getMaxRows()`
`boolean`
`getMoreResults()`
`boolean`
`getMoreResults(int current)`
`protected List<TypedValue>`
`getParameterValues()`
Returns the list of values of this statement's parameters.
`int`
`getQueryTimeout()`
`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)`
`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)`
`final void`
`setMaxRows(int maxRowCount)`
`void`
`setPoolable(boolean poolable)`
`void`
`setQueryTimeout(int seconds)`
`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`

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

`enquoteIdentifier, enquoteLiteral, enquoteNCharLiteral, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, isSimpleIdentifier`

## Field Details

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

### maxRowCount

protected long maxRowCount

## Constructor Details

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

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

### checkOpen

protected void checkOpen() 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

Specified by:
  `executeLargeUpdate` in interface `Statement`
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() throws SQLException

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

### getLargeMaxRows

public long getLargeMaxRows() throws SQLException

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

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

Specified by:
  `setLargeMaxRows` in interface `Statement`
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`

### setQueryTimeout

public void setQueryTimeout(int seconds) throws SQLException

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

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

Specified by:
  `getLargeUpdateCount` in interface `Statement`
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() throws SQLException

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

### setFetchSize

public void setFetchSize(int rows) throws SQLException

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

### getFetchSize

public int getFetchSize() throws SQLException

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

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

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

### getConnection

public AvaticaConnection getConnection() throws SQLException

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

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

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