org.apache.calcite.avatica

## Interface Handler

All Known Implementing Classes:
  HandlerImpl

    public interface Handler

Called at various points in the JDBC lifecycle.

Most drivers will use `HandlerImpl`, which provides no-op implementations of all methods. You only need to override methods if you need to achieve special effects.

### Nested Class Summary

Nested Classes
`static interface` `Handler.ResultSink` Handler for temporary tables.

### Method Summary

All Methods Instance Methods Abstract Methods
`void` `onConnectionClose(AvaticaConnection connection)` Called by container when a connection is being closed.
`void` `onConnectionInit(AvaticaConnection connection)` Called by container when a connection is being created.
`void` `onStatementClose(AvaticaStatement statement)` Called by container when a statement is being closed.
`void` `onStatementExecute(AvaticaStatement statement, Handler.ResultSink resultSink)` Called by container when a statement is being executed.

### Method Detail

#### onConnectionInit

    void onConnectionInit(AvaticaConnection connection)
                   throws SQLException

Called by container when a connection is being created.

If the implementation of this method throws, the connection will not be created.

Parameters:
  `connection` - Connection
Throws:
  `SQLException` - on error

#### onConnectionClose

    void onConnectionClose(AvaticaConnection connection)

Called by container when a connection is being closed.

If the implementation of this method throws, the call to `Connection.close()` that triggered this method will throw an exception, but the connection will still be marked closed.

Parameters:
  `connection` - Connection

#### onStatementExecute

    void onStatementExecute(AvaticaStatement statement,
                            Handler.ResultSink resultSink)

Called by container when a statement is being executed.

If the session would like the statement results stored in a temporary table, `resultSink` is not null. The provider must call its `Handler.ResultSink.toBeCompleted()` method at some point during execution (not necessarily before the call to this method returns).

Parameters:
  `statement` - Statement
  `resultSink` - Place to put result of query. Null if container does not want results stored to a temporary table
Throws:
  `RuntimeException` - on error

#### onStatementClose

    void onStatementClose(AvaticaStatement statement)

Called by container when a statement is being closed.

This method is called after marking the statement closed, and after closing any open `ResultSet` objects.

If the implementation of this method throws, the call to `Statement.close()` that triggered this method will throw an exception, but the statement will still be marked closed.

Parameters:
  `statement` - Statement
Throws:
  `RuntimeException` - on error