Package org.apache.calcite.avatica

## Class AvaticaConnection

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

All Implemented Interfaces:
  `java.lang.AutoCloseable`, `java.sql.Connection`, `java.sql.Wrapper`

Direct Known Subclasses:
  `AvaticaJdbc41Factory.AvaticaJdbc41Connection`

    public abstract class AvaticaConnection
    extends java.lang.Object
    implements java.sql.Connection

Implementation of JDBC connection for the Avatica framework.

Abstract to allow newer versions of JDBC to add methods.

### Nested Class Summary

Nested Classes
`static interface` `AvaticaConnection.CallableWithoutException<T>` A Callable-like interface but without a "throws Exception".
`static class` `AvaticaConnection.Trojan` A way to call package-protected methods.

### Field Summary

Fields
`private boolean` `closed`
`protected UnregisteredDriver` `driver`
`protected AvaticaFactory` `factory`
`(package private) java.util.Map<java.lang.Integer,​java.util.concurrent.atomic.AtomicBoolean>` `flagMap`
`Meta.ConnectionHandle` `handle`
`static Helper` `HELPER`
`private int` `holdability`
`java.lang.String` `id`
`protected java.util.Properties` `info`
`private KerberosConnection` `kerberosConnection`
`protected long` `maxRetriesPerExecute`
`protected Meta` `meta`
`protected AvaticaSpecificDatabaseMetaData` `metaData`
`private int` `networkTimeout`
`static java.lang.String` `NUM_EXECUTE_RETRIES_DEFAULT`
`static java.lang.String` `NUM_EXECUTE_RETRIES_KEY`
`static java.lang.String` `PLAN_COLUMN_NAME` The name of the sole column returned by an EXPLAIN statement.
`java.util.Map<InternalProperty,​java.lang.Object>` `properties`
`static java.lang.String` `ROWCOUNT_COLUMN_NAME` The name of the sole column returned by DML statements, containing the number of rows modified.
`private Service` `service`
`protected int` `statementCount`
`java.util.Map<java.lang.Integer,​AvaticaStatement>` `statementMap`
`(package private) java.lang.String` `url`

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

`TRANSACTION_NONE, TRANSACTION_READ_COMMITTED, TRANSACTION_READ_UNCOMMITTED, TRANSACTION_REPEATABLE_READ, TRANSACTION_SERIALIZABLE`

### Constructor Summary

Constructors
`protected` `AvaticaConnection​(UnregisteredDriver driver, AvaticaFactory factory, java.lang.String url, java.util.Properties info)` Creates an AvaticaConnection.

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`void` `abort​(java.util.concurrent.Executor executor)`
`protected void` `checkOpen()`
`void` `clearWarnings()`
`void` `close()`
`void` `commit()`
`ConnectionConfig` `config()` Returns a view onto this connection's configuration properties.
`java.sql.Array` `createArrayOf​(java.lang.String typeName, java.lang.Object[] elements)`
`java.sql.Blob` `createBlob()`
`java.sql.Clob` `createClob()`
`java.sql.NClob` `createNClob()`
`protected java.sql.ResultSet` `createResultSet​(Meta.MetaResultSet metaResultSet, QueryState state)`
`java.sql.SQLXML` `createSQLXML()`
`AvaticaStatement` `createStatement()`
`java.sql.Statement` `createStatement​(int resultSetType, int resultSetConcurrency)`
`AvaticaStatement` `createStatement​(int resultSetType, int resultSetConcurrency, int resultSetHoldability)`
`java.sql.Struct` `createStruct​(java.lang.String typeName, java.lang.Object[] attributes)`
`protected static AvaticaConnection.Trojan` `createTrojan()`
`protected long[]` `executeBatchUpdateInternal​(AvaticaPreparedStatement pstmt)` Executes a batch update using an `AvaticaPreparedStatement`.
`protected java.sql.ResultSet` `executeQueryInternal​(AvaticaStatement statement, Meta.Signature signature, Meta.Frame firstFrame, QueryState state, boolean isUpdate)` Executes a prepared query, closing any previously open result set.
`boolean` `getAutoCommit()`
`java.util.concurrent.atomic.AtomicBoolean` `getCancelFlag​(Meta.StatementHandle h)` Returns or creates a slot whose state can be changed to cancel a statement.
`java.lang.String` `getCatalog()`
`java.util.Properties` `getClientInfo()`
`java.lang.String` `getClientInfo​(java.lang.String name)`
`int` `getHoldability()`
`KerberosConnection` `getKerberosConnection()`
`java.sql.DatabaseMetaData` `getMetaData()`
`int` `getNetworkTimeout()`
`(package private) long` `getNumStatementRetries​(java.util.Properties props)` Computes the number of retries `AvaticaStatement.executeInternal(Meta.Signature, boolean)` should retry before failing.
`java.lang.String` `getSchema()`
`Service` `getService()`
`java.util.TimeZone` `getTimeZone()` Returns the time zone of this connection.
`int` `getTransactionIsolation()`
`java.util.Map<java.lang.String,​java.lang.Class<?>>` `getTypeMap()`
`java.sql.SQLWarning` `getWarnings()`
`<T> T` `invokeWithRetries​(AvaticaConnection.CallableWithoutException<T> callable)` Invokes the given "callable", retrying the call when the server responds with an error denoting that the connection is missing on the server.
`boolean` `isClosed()`
`boolean` `isReadOnly()`
`private void` `isUpdateCapable​(AvaticaStatement statement)` Returns whether a a statement is capable of updates and if so, and the statement's `updateCount` is still -1, proceeds to get updateCount value from statement's resultSet.
`boolean` `isValid​(int timeout)`
`boolean` `isWrapperFor​(java.lang.Class<?> iface)`
`protected AvaticaStatement` `lookupStatement​(Meta.StatementHandle h)` Creates a statement wrapper around an existing handle.
`java.lang.String` `nativeSQL​(java.lang.String sql)`
`void` `openConnection()` Opens the connection on the server.
`protected Meta.ExecuteResult` `prepareAndExecuteInternal​(AvaticaStatement statement, java.lang.String sql, long maxRowCount)`
`protected Meta.ExecuteBatchResult` `prepareAndUpdateBatch​(AvaticaStatement statement, java.util.List<java.lang.String> queries)`
`java.sql.CallableStatement` `prepareCall​(java.lang.String sql)`
`java.sql.CallableStatement` `prepareCall​(java.lang.String sql, int resultSetType, int resultSetConcurrency)`
`java.sql.CallableStatement` `prepareCall​(java.lang.String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)`
`java.sql.PreparedStatement` `prepareStatement​(java.lang.String sql)`
`java.sql.PreparedStatement` `prepareStatement​(java.lang.String sql, int autoGeneratedKeys)`
`java.sql.PreparedStatement` `prepareStatement​(java.lang.String sql, int[] columnIndexes)`
`java.sql.PreparedStatement` `prepareStatement​(java.lang.String sql, int resultSetType, int resultSetConcurrency)`
`java.sql.PreparedStatement` `prepareStatement​(java.lang.String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)`
`java.sql.PreparedStatement` `prepareStatement​(java.lang.String sql, java.lang.String[] columnNames)`
`void` `releaseSavepoint​(java.sql.Savepoint savepoint)`
`void` `rollback()`
`void` `rollback​(java.sql.Savepoint savepoint)`
`void` `setAutoCommit​(boolean autoCommit)`
`void` `setCatalog​(java.lang.String catalog)`
`void` `setClientInfo​(java.lang.String name, java.lang.String value)`
`void` `setClientInfo​(java.util.Properties properties)`
`void` `setHoldability​(int holdability)`
`void` `setKerberosConnection​(KerberosConnection kerberosConnection)`
`void` `setNetworkTimeout​(java.util.concurrent.Executor executor, int milliseconds)`
`void` `setReadOnly​(boolean readOnly)`
`java.sql.Savepoint` `setSavepoint()`
`java.sql.Savepoint` `setSavepoint​(java.lang.String name)`
`void` `setSchema​(java.lang.String schema)`
`void` `setService​(Service service)`
`void` `setTransactionIsolation​(int level)`
`void` `setTypeMap​(java.util.Map<java.lang.String,​java.lang.Class<?>> map)`
`private Meta.ConnectionProperties` `sync()`
`private boolean` `unbox​(java.lang.Boolean b, boolean defaultValue)` Converts a `Boolean` to a `boolean`, with a default value.
`private int` `unbox​(java.lang.Integer i, int defaultValue)` Converts an `Integer` to an `int`, with a default value.
`<T> T` `unwrap​(java.lang.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.Connection

`beginRequest, endRequest, setShardingKey, setShardingKey, setShardingKeyIfValid, setShardingKeyIfValid`

### Field Detail

#### ROWCOUNT_COLUMN_NAME

    public static final java.lang.String ROWCOUNT_COLUMN_NAME

The name of the sole column returned by DML statements, containing the number of rows modified.

See Also:
  Constant Field Values

#### NUM_EXECUTE_RETRIES_KEY

    public static final java.lang.String NUM_EXECUTE_RETRIES_KEY

See Also:
  Constant Field Values

#### NUM_EXECUTE_RETRIES_DEFAULT

    public static final java.lang.String NUM_EXECUTE_RETRIES_DEFAULT

See Also:
  Constant Field Values

#### PLAN_COLUMN_NAME

    public static final java.lang.String PLAN_COLUMN_NAME

The name of the sole column returned by an EXPLAIN statement.

Actually Avatica does not care what this column is called, but here is a useful place to define a suggested value.

See Also:
  Constant Field Values

#### HELPER

    public static final Helper HELPER

#### statementCount

    protected int statementCount

#### closed

    private boolean closed

#### holdability

    private int holdability

#### networkTimeout

    private int networkTimeout

#### kerberosConnection

    private KerberosConnection kerberosConnection

#### service

    private Service service

#### id

    public final java.lang.String id

#### handle

    public final Meta.ConnectionHandle handle

#### driver

    protected final UnregisteredDriver driver

#### factory

    protected final AvaticaFactory factory

#### url

    final java.lang.String url

#### info

    protected final java.util.Properties info

#### meta

    protected final Meta meta

#### metaData

    protected final AvaticaSpecificDatabaseMetaData metaData

#### properties

    public final java.util.Map<InternalProperty,​java.lang.Object> properties

#### statementMap

    public final java.util.Map<java.lang.Integer,​AvaticaStatement> statementMap

#### flagMap

    final java.util.Map<java.lang.Integer,​java.util.concurrent.atomic.AtomicBoolean> flagMap

#### maxRetriesPerExecute

    protected final long maxRetriesPerExecute

### Constructor Detail

#### AvaticaConnection

    protected AvaticaConnection​(UnregisteredDriver driver,
                                AvaticaFactory factory,
                                java.lang.String url,
                                java.util.Properties info)

Creates an AvaticaConnection.

Not public; method is called only from the driver or a derived class.

Parameters:
  `driver` - Driver
  `factory` - Factory for JDBC objects
  `url` - Server URL
  `info` - Other connection properties

### Method Detail

#### getNumStatementRetries

    long getNumStatementRetries​(java.util.Properties props)

Computes the number of retries `AvaticaStatement.executeInternal(Meta.Signature, boolean)` should retry before failing.

#### config

    public ConnectionConfig config()

Returns a view onto this connection's configuration properties. Code in Avatica and derived projects should use this view rather than calling `Properties.getProperty(String)`. Derived projects will almost certainly subclass `ConnectionConfig` with their own properties.

#### openConnection

    public void openConnection()

Opens the connection on the server.

#### checkOpen

    protected void checkOpen()
                      throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### createStatement

    public AvaticaStatement createStatement()
                                     throws java.sql.SQLException

Specified by:
  `createStatement` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### prepareStatement

    public java.sql.PreparedStatement prepareStatement​(java.lang.String sql)
                                                throws java.sql.SQLException

Specified by:
  `prepareStatement` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### prepareCall

    public java.sql.CallableStatement prepareCall​(java.lang.String sql)
                                           throws java.sql.SQLException

Specified by:
  `prepareCall` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### nativeSQL

    public java.lang.String nativeSQL​(java.lang.String sql)
                               throws java.sql.SQLException

Specified by:
  `nativeSQL` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### setAutoCommit

    public void setAutoCommit​(boolean autoCommit)
                       throws java.sql.SQLException

Specified by:
  `setAutoCommit` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### getAutoCommit

    public boolean getAutoCommit()
                          throws java.sql.SQLException

Specified by:
  `getAutoCommit` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### commit

    public void commit()
                throws java.sql.SQLException

Specified by:
  `commit` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### rollback

    public void rollback()
                  throws java.sql.SQLException

Specified by:
  `rollback` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### close

    public void close()
               throws java.sql.SQLException

Specified by:
  `close` in interface `java.lang.AutoCloseable`
Specified by:
  `close` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### isClosed

    public boolean isClosed()
                     throws java.sql.SQLException

Specified by:
  `isClosed` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### getMetaData

    public java.sql.DatabaseMetaData getMetaData()
                                          throws java.sql.SQLException

Specified by:
  `getMetaData` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### setReadOnly

    public void setReadOnly​(boolean readOnly)
                     throws java.sql.SQLException

Specified by:
  `setReadOnly` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### isReadOnly

    public boolean isReadOnly()
                       throws java.sql.SQLException

Specified by:
  `isReadOnly` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### setCatalog

    public void setCatalog​(java.lang.String catalog)
                    throws java.sql.SQLException

Specified by:
  `setCatalog` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### getCatalog

    public java.lang.String getCatalog()
                                throws java.sql.SQLException

Specified by:
  `getCatalog` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### setTransactionIsolation

    public void setTransactionIsolation​(int level)
                                 throws java.sql.SQLException

Specified by:
  `setTransactionIsolation` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### getTransactionIsolation

    public int getTransactionIsolation()
                                throws java.sql.SQLException

Specified by:
  `getTransactionIsolation` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### getWarnings

    public java.sql.SQLWarning getWarnings()
                                    throws java.sql.SQLException

Specified by:
  `getWarnings` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### clearWarnings

    public void clearWarnings()
                       throws java.sql.SQLException

Specified by:
  `clearWarnings` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### createStatement

    public java.sql.Statement createStatement​(int resultSetType,
                                              int resultSetConcurrency)
                                       throws java.sql.SQLException

Specified by:
  `createStatement` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### prepareStatement

    public java.sql.PreparedStatement prepareStatement​(java.lang.String sql,
                                                       int resultSetType,
                                                       int resultSetConcurrency)
                                                throws java.sql.SQLException

Specified by:
  `prepareStatement` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### prepareCall

    public java.sql.CallableStatement prepareCall​(java.lang.String sql,
                                                  int resultSetType,
                                                  int resultSetConcurrency)
                                           throws java.sql.SQLException

Specified by:
  `prepareCall` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### getTypeMap

    public java.util.Map<java.lang.String,​java.lang.Class<?>> getTypeMap()
                                                                        throws java.sql.SQLException

Specified by:
  `getTypeMap` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### setTypeMap

    public void setTypeMap​(java.util.Map<java.lang.String,​java.lang.Class<?>> map)
                    throws java.sql.SQLException

Specified by:
  `setTypeMap` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### setHoldability

    public void setHoldability​(int holdability)
                        throws java.sql.SQLException

Specified by:
  `setHoldability` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### getHoldability

    public int getHoldability()
                       throws java.sql.SQLException

Specified by:
  `getHoldability` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### setSavepoint

    public java.sql.Savepoint setSavepoint()
                                    throws java.sql.SQLException

Specified by:
  `setSavepoint` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### setSavepoint

    public java.sql.Savepoint setSavepoint​(java.lang.String name)
                                    throws java.sql.SQLException

Specified by:
  `setSavepoint` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### rollback

    public void rollback​(java.sql.Savepoint savepoint)
                  throws java.sql.SQLException

Specified by:
  `rollback` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### releaseSavepoint

    public void releaseSavepoint​(java.sql.Savepoint savepoint)
                          throws java.sql.SQLException

Specified by:
  `releaseSavepoint` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### createStatement

    public AvaticaStatement createStatement​(int resultSetType,
                                            int resultSetConcurrency,
                                            int resultSetHoldability)
                                     throws java.sql.SQLException

Specified by:
  `createStatement` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### prepareStatement

    public java.sql.PreparedStatement prepareStatement​(java.lang.String sql,
                                                       int resultSetType,
                                                       int resultSetConcurrency,
                                                       int resultSetHoldability)
                                                throws java.sql.SQLException

Specified by:
  `prepareStatement` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### prepareCall

    public java.sql.CallableStatement prepareCall​(java.lang.String sql,
                                                  int resultSetType,
                                                  int resultSetConcurrency,
                                                  int resultSetHoldability)
                                           throws java.sql.SQLException

Specified by:
  `prepareCall` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### prepareStatement

    public java.sql.PreparedStatement prepareStatement​(java.lang.String sql,
                                                       int autoGeneratedKeys)
                                                throws java.sql.SQLException

Specified by:
  `prepareStatement` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### prepareStatement

    public java.sql.PreparedStatement prepareStatement​(java.lang.String sql,
                                                       int[] columnIndexes)
                                                throws java.sql.SQLException

Specified by:
  `prepareStatement` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### prepareStatement

    public java.sql.PreparedStatement prepareStatement​(java.lang.String sql,
                                                       java.lang.String[] columnNames)
                                                throws java.sql.SQLException

Specified by:
  `prepareStatement` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### createClob

    public java.sql.Clob createClob()
                             throws java.sql.SQLException

Specified by:
  `createClob` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### createBlob

    public java.sql.Blob createBlob()
                             throws java.sql.SQLException

Specified by:
  `createBlob` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### createNClob

    public java.sql.NClob createNClob()
                               throws java.sql.SQLException

Specified by:
  `createNClob` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### createSQLXML

    public java.sql.SQLXML createSQLXML()
                                 throws java.sql.SQLException

Specified by:
  `createSQLXML` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### isValid

    public boolean isValid​(int timeout)
                    throws java.sql.SQLException

Specified by:
  `isValid` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### setClientInfo

    public void setClientInfo​(java.lang.String name,
                              java.lang.String value)
                       throws java.sql.SQLClientInfoException

Specified by:
  `setClientInfo` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLClientInfoException`

#### setClientInfo

    public void setClientInfo​(java.util.Properties properties)
                       throws java.sql.SQLClientInfoException

Specified by:
  `setClientInfo` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLClientInfoException`

#### getClientInfo

    public java.lang.String getClientInfo​(java.lang.String name)
                                   throws java.sql.SQLException

Specified by:
  `getClientInfo` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### getClientInfo

    public java.util.Properties getClientInfo()
                                       throws java.sql.SQLException

Specified by:
  `getClientInfo` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### createArrayOf

    public java.sql.Array createArrayOf​(java.lang.String typeName,
                                        java.lang.Object[] elements)
                                 throws java.sql.SQLException

Specified by:
  `createArrayOf` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### createStruct

    public java.sql.Struct createStruct​(java.lang.String typeName,
                                        java.lang.Object[] attributes)
                                 throws java.sql.SQLException

Specified by:
  `createStruct` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### setSchema

    public void setSchema​(java.lang.String schema)
                   throws java.sql.SQLException

Specified by:
  `setSchema` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### getSchema

    public java.lang.String getSchema()
                               throws java.sql.SQLException

Specified by:
  `getSchema` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### abort

    public void abort​(java.util.concurrent.Executor executor)
               throws java.sql.SQLException

Specified by:
  `abort` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### setNetworkTimeout

    public void setNetworkTimeout​(java.util.concurrent.Executor executor,
                                  int milliseconds)
                           throws java.sql.SQLException

Specified by:
  `setNetworkTimeout` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### getNetworkTimeout

    public int getNetworkTimeout()
                          throws java.sql.SQLException

Specified by:
  `getNetworkTimeout` in interface `java.sql.Connection`
Throws:
  `java.sql.SQLException`

#### unwrap

    public <T> T unwrap​(java.lang.Class<T> iface)
                 throws java.sql.SQLException

Specified by:
  `unwrap` in interface `java.sql.Wrapper`
Throws:
  `java.sql.SQLException`

#### isWrapperFor

    public boolean isWrapperFor​(java.lang.Class<?> iface)
                         throws java.sql.SQLException

Specified by:
  `isWrapperFor` in interface `java.sql.Wrapper`
Throws:
  `java.sql.SQLException`

#### getTimeZone

    public java.util.TimeZone getTimeZone()

Returns the time zone of this connection. Determines the offset applied when converting datetime values from the database into `Timestamp` values.

#### executeQueryInternal

    protected java.sql.ResultSet executeQueryInternal​(AvaticaStatement statement,
                                                      Meta.Signature signature,
                                                      Meta.Frame firstFrame,
                                                      QueryState state,
                                                      boolean isUpdate)
                                               throws java.sql.SQLException

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

Parameters:
  `statement` - Statement
  `signature` - Prepared query
  `firstFrame` - First frame of rows, or null if we need to execute
  `state` - The state used to create the given result
  `isUpdate` - Was the caller context via `PreparedStatement.executeUpdate()`.
Returns:
  Result set
Throws:
  `java.sql.SQLException` - if a database error occurs

#### executeBatchUpdateInternal

    protected long[] executeBatchUpdateInternal​(AvaticaPreparedStatement pstmt)
                                         throws java.sql.SQLException

Executes a batch update using an `AvaticaPreparedStatement`.

Parameters:
  `pstmt` - The prepared statement.
Returns:
  An array of update counts containing one element for each command in the batch.
Throws:
  `java.sql.SQLException`

#### isUpdateCapable

    private void isUpdateCapable​(AvaticaStatement statement)
                          throws java.sql.SQLException

Returns whether a a statement is capable of updates and if so, and the statement's `updateCount` is still -1, proceeds to get updateCount value from statement's resultSet.

Handles "ROWCOUNT" object as Number or List

Parameters:
  `statement` - Statement
Throws:
  `java.sql.SQLException` - on error

#### prepareAndExecuteInternal

    protected Meta.ExecuteResult prepareAndExecuteInternal​(AvaticaStatement statement,
                                                           java.lang.String sql,
                                                           long maxRowCount)
                                                    throws java.sql.SQLException,
                                                           NoSuchStatementException

Throws:
  `java.sql.SQLException`
  `NoSuchStatementException`

#### prepareAndUpdateBatch

    protected Meta.ExecuteBatchResult prepareAndUpdateBatch​(AvaticaStatement statement,
                                                            java.util.List<java.lang.String> queries)
                                                     throws NoSuchStatementException,
                                                            java.sql.SQLException

Throws:
  `NoSuchStatementException`
  `java.sql.SQLException`

#### createResultSet

    protected java.sql.ResultSet createResultSet​(Meta.MetaResultSet metaResultSet,
                                                 QueryState state)
                                          throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### lookupStatement

    protected AvaticaStatement lookupStatement​(Meta.StatementHandle h)
                                        throws java.sql.SQLException

Creates a statement wrapper around an existing handle.

Throws:
  `java.sql.SQLException`

#### createTrojan

    protected static AvaticaConnection.Trojan createTrojan()

#### unbox

    private boolean unbox​(java.lang.Boolean b,
                          boolean defaultValue)

Converts a `Boolean` to a `boolean`, with a default value.

#### unbox

    private int unbox​(java.lang.Integer i,
                      int defaultValue)

Converts an `Integer` to an `int`, with a default value.

#### sync

    private Meta.ConnectionProperties sync()

#### getCancelFlag

    public java.util.concurrent.atomic.AtomicBoolean getCancelFlag​(Meta.StatementHandle h)
                                                            throws NoSuchStatementException

Returns or creates a slot whose state can be changed to cancel a statement. Statements will receive the same slot if and only if their id is the same.

Throws:
  `NoSuchStatementException`

#### invokeWithRetries

    public <T> T invokeWithRetries​(AvaticaConnection.CallableWithoutException<T> callable)

Invokes the given "callable", retrying the call when the server responds with an error denoting that the connection is missing on the server.

Parameters:
  `callable` - The function to invoke.
Returns:
  The value from the result of the callable.

#### setKerberosConnection

    public void setKerberosConnection​(KerberosConnection kerberosConnection)

#### getKerberosConnection

    public KerberosConnection getKerberosConnection()

#### getService

    public Service getService()

#### setService

    public void setService​(Service service)