com.amazon.redshift.core

## Class ResultHandlerBase

- java.lang.Object
- - com.amazon.redshift.core.ResultHandlerBase

All Implemented Interfaces:
  ResultHandler

Direct Known Subclasses:
  BatchResultHandler, RedshiftResultSet.CursorResultHandler, RedshiftStatementImpl.StatementResultHandler

    public class ResultHandlerBase
    extends Object
    implements ResultHandler

Empty implementation of `ResultHandler` interface. `SQLException.setNextException(SQLException)` has `O(N)` complexity, so this class tracks the last exception object to speedup `setNextException`.

### Constructor Summary

Constructors
Constructor and Description
`ResultHandlerBase(Properties inProps)`

### Method Summary

All Methods Instance Methods Concrete Methods
`SQLException` `getException()` Returns the first encountered exception.
`SQLWarning` `getWarning()` Returns the first encountered warning.
`void` `handleCommandStatus(String status, long updateCount, long insertOID)` Called when a query that did not return a resultset completes.
`void` `handleCompletion()` Called before a QueryExecutor method returns.
`void` `handleError(SQLException error)` Called when an error occurs.
`void` `handleResultRows(Query fromQuery, Field[] fields, List<Tuple> tuples, ResultCursor cursor, RedshiftRowsBlockingQueue<Tuple> queueTuples, int[] rowCount, Thread ringBufferThread)` Called when result rows are received from a query.
`void` `handleWarning(SQLWarning warning)` Called when a warning is emitted.
`void` `secureProgress()` Callback for batch statements.
`void` `setStatementStateIdleFromInQuery()` Set statement state on completion of the Ring buffer thread.
`void` `setStatementStateInQueryFromIdle()` Set statement state on start from IDLE to IN_QUERY, in case Ring Buffer thread reset the new query state as IDLE.
`boolean` `wantsScrollableResultSet()` Check the statement type

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

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

### Constructor Detail

#### ResultHandlerBase

    public ResultHandlerBase(Properties inProps)

### Method Detail

#### handleResultRows

    public void handleResultRows(Query fromQuery,
                                 Field[] fields,
                                 List<Tuple> tuples,
                                 ResultCursor cursor,
                                 RedshiftRowsBlockingQueue<Tuple> queueTuples,
                                 int[] rowCount,
                                 Thread ringBufferThread)

Description copied from interface: `ResultHandler`
Called when result rows are received from a query.

Specified by:
  `handleResultRows` in interface `ResultHandler`
Parameters:
  `fromQuery` - the underlying query that generated these results; this may not be very specific (e.g. it may be a query that includes multiple statements).
  `fields` - column metadata for the resultset; might be `null` if Query.QUERY_NO_METADATA was specified.
  `tuples` - the actual data. If this is set then queueTuples will be null.
  `cursor` - a cursor to use to fetch additional data; `null` if no further results are present.
  `queueTuples` - the actual data in a blocking queue. If this is set then tuples will be null.
  `rowCount` - number of rows fetched from the socket.
  `ringBufferThread` - a thread to fetch rows in the limited rows buffer.

#### handleCommandStatus

    public void handleCommandStatus(String status,
                                    long updateCount,
                                    long insertOID)

Description copied from interface: `ResultHandler`
Called when a query that did not return a resultset completes.

Specified by:
  `handleCommandStatus` in interface `ResultHandler`
Parameters:
  `status` - the command status string (e.g. "SELECT") returned by the backend
  `updateCount` - the number of rows affected by an INSERT, UPDATE, DELETE, FETCH, or MOVE command; -1 if not available.
  `insertOID` - for a single-row INSERT query, the OID of the newly inserted row; 0 if not available.

#### secureProgress

    public void secureProgress()

Description copied from interface: `ResultHandler`
Callback for batch statements. In case batch statement is executed in autocommit==true mode, the executor might commit "as it this it is best", so the result handler should track which statements are executed successfully and which are not.

Specified by:
  `secureProgress` in interface `ResultHandler`

#### handleWarning

    public void handleWarning(SQLWarning warning)

Description copied from interface: `ResultHandler`
Called when a warning is emitted.

Specified by:
  `handleWarning` in interface `ResultHandler`
Parameters:
  `warning` - the warning that occurred.

#### handleError

    public void handleError(SQLException error)

Description copied from interface: `ResultHandler`
Called when an error occurs. Subsequent queries are abandoned; in general the only calls between a handleError call and a subsequent handleCompletion call are handleError or handleWarning.

Specified by:
  `handleError` in interface `ResultHandler`
Parameters:
  `error` - the error that occurred

#### handleCompletion

    public void handleCompletion()
                          throws SQLException

Description copied from interface: `ResultHandler`
Called before a QueryExecutor method returns. This method may throw a SQLException if desired; if it does, the QueryExecutor method will propagate that exception to the original caller.

Specified by:
  `handleCompletion` in interface `ResultHandler`
Throws:
  `SQLException` - if the handler wishes the original method to throw an exception.

#### getException

    public SQLException getException()

Description copied from interface: `ResultHandler`
Returns the first encountered exception. The rest are chained via `SQLException.setNextException(SQLException)`

Specified by:
  `getException` in interface `ResultHandler`
Returns:
  the first encountered exception

#### getWarning

    public SQLWarning getWarning()

Description copied from interface: `ResultHandler`
Returns the first encountered warning. The rest are chained via `SQLException.setNextException(SQLException)`

Specified by:
  `getWarning` in interface `ResultHandler`
Returns:
  the first encountered warning

#### setStatementStateIdleFromInQuery

    public void setStatementStateIdleFromInQuery()

Description copied from interface: `ResultHandler`
Set statement state on completion of the Ring buffer thread.

Specified by:
  `setStatementStateIdleFromInQuery` in interface `ResultHandler`

#### setStatementStateInQueryFromIdle

    public void setStatementStateInQueryFromIdle()

Description copied from interface: `ResultHandler`
Set statement state on start from IDLE to IN_QUERY, in case Ring Buffer thread reset the new query state as IDLE.

Specified by:
  `setStatementStateInQueryFromIdle` in interface `ResultHandler`

#### wantsScrollableResultSet

    public boolean wantsScrollableResultSet()

Description copied from interface: `ResultHandler`
Check the statement type

Specified by:
  `wantsScrollableResultSet` in interface `ResultHandler`
Returns:
  true if scrollable, false for forward only.