public class RedshiftStatementImpl extends Object implements Statement, BaseStatement
Modifier and Type | Class and Description |
---|---|
class |
RedshiftStatementImpl.StatementResultHandler
ResultHandler implementations for updates, queries, and either-or.
|
Modifier and Type | Field and Description |
---|---|
protected int |
autoGeneratedKeys |
protected ArrayList<ParameterList> |
batchParameters |
protected ArrayList<Query> |
batchStatements |
protected int |
concurrency |
protected BaseConnection |
connection |
protected int |
fetchdirection |
protected int |
fetchSize
Number of rows to get in a batch.
|
protected ResultWrapper |
firstUnclosedResult
The first unclosed result.
|
protected ResultWrapper |
generatedKeys
Results returned by a statement that wants generated keys.
|
protected int |
maxFieldSize |
protected int |
maxrows
Maximum number of rows to return, 0 = unlimited.
|
protected int |
mPrepareThreshold |
protected boolean |
replaceProcessingEnabled |
protected ResultWrapper |
result
The current results.
|
protected int |
resultsettype |
protected long |
timeout
Timeout (in milliseconds) for a query.
|
boolean |
wantsGeneratedKeysAlways
Was this PreparedStatement created to return generated keys for every execution? This is set at
creation time and never cleared by execution.
|
protected boolean |
wantsGeneratedKeysOnce
Does the caller of execute/executeUpdate want generated keys for this execution? This is set by
Statement methods that have generated keys arguments and cleared after execution is complete.
|
protected com.amazon.redshift.jdbc.RedshiftWarningWrapper |
warnings
The warnings chain.
|
DATE_NEGATIVE_INFINITY, DATE_NEGATIVE_SMALLER_INFINITY, DATE_POSITIVE_INFINITY, DATE_POSITIVE_SMALLER_INFINITY
CLOSE_ALL_RESULTS, CLOSE_CURRENT_RESULT, EXECUTE_FAILED, KEEP_CURRENT_RESULT, NO_GENERATED_KEYS, RETURN_GENERATED_KEYS, SUCCESS_NO_INFO
Modifier and Type | Method and Description |
---|---|
void |
addBatch(String sql) |
void |
addWarning(SQLWarning warn)
Either initializes new warning wrapper, or adds warning onto the chain.
|
void |
cancel() |
protected void |
checkClosed() |
protected void |
checkCompletion() |
protected void |
checkNoResultUpdate() |
void |
clearBatch() |
void |
clearWarnings()
Clears the warning chain.
|
void |
close()
Note: even though
Statement is automatically closed when it is garbage
collected, it is better to close it explicitly to lower resource consumption. |
protected void |
closeForNextExecution() |
protected void |
closeImpl()
This is guaranteed to be called exactly once even in case of concurrent
close() calls. |
void |
closeOnCompletion() |
protected BatchResultHandler |
createBatchHandler(Query[] queries,
ParameterList[] parameterLists) |
ResultSet |
createDriverResultSet(Field[] fields,
List<Tuple> tuples)
Create a synthetic resultset from data provided by the driver.
|
ResultSet |
createResultSet(Query originalQuery,
Field[] fields,
List<Tuple> tuples,
ResultCursor cursor,
RedshiftRowsBlockingQueue<Tuple> queueTuples,
int[] rowCount,
Thread ringBufferThread)
Create a resultset from data retrieved from the server.
|
protected void |
execute(CachedQuery cachedQuery,
ParameterList queryParameters,
int flags) |
boolean |
execute(String sql) |
boolean |
execute(String sql,
int autoGeneratedKeys) |
boolean |
execute(String sql,
int[] columnIndexes) |
boolean |
execute(String sql,
String[] columnNames) |
int[] |
executeBatch() |
long[] |
executeLargeBatch() |
long |
executeLargeUpdate(String sql) |
long |
executeLargeUpdate(String sql,
int autoGeneratedKeys) |
long |
executeLargeUpdate(String sql,
int[] columnIndexes) |
long |
executeLargeUpdate(String sql,
String[] columnNames) |
ResultSet |
executeQuery(String sql) |
int |
executeUpdate(String sql) |
int |
executeUpdate(String sql,
int autoGeneratedKeys) |
int |
executeUpdate(String sql,
int[] columnIndexes) |
int |
executeUpdate(String sql,
String[] columnNames) |
boolean |
executeWithFlags(CachedQuery simpleQuery,
int flags)
Execute a query, passing additional query flags.
|
boolean |
executeWithFlags(int flags)
Execute a prepared query, passing additional query flags.
|
boolean |
executeWithFlags(String sql,
int flags)
Execute a query, passing additional query flags.
|
Connection |
getConnection() |
int |
getFetchDirection() |
String |
getFetchingCursorName() |
int |
getFetchSize() |
protected boolean |
getForceBinaryTransfer() |
ResultSet |
getGeneratedKeys() |
long |
getLargeMaxRows() |
long |
getLargeUpdateCount() |
long |
getLastOID()
Returns the Last inserted/updated oid.
|
int |
getMaxFieldSize() |
int |
getMaxRows() |
boolean |
getMoreResults() |
boolean |
getMoreResults(int current) |
int |
getPrepareThreshold()
Gets the server-side prepare reuse threshold in use for this statement.
|
int |
getQueryTimeout() |
long |
getQueryTimeoutMs()
The queryTimeout limit is the number of milliseconds the driver will wait for a Statement to
execute.
|
BaseConnection |
getRedshiftConnection() |
ResultSet |
getResultSet() |
int |
getResultSetConcurrency() |
int |
getResultSetHoldability() |
int |
getResultSetType() |
protected ResultSet |
getSingleResultSet() |
int |
getUpdateCount() |
SQLWarning |
getWarnings() |
boolean |
isClosed() |
boolean |
isCloseOnCompletion() |
protected boolean |
isOneShotQuery(CachedQuery cachedQuery)
Returns true if query is unlikely to be reused.
|
boolean |
isPoolable() |
boolean |
isUseServerPrepare()
Checks if this statement will be executed as a server-prepared statement.
|
boolean |
isWrapperFor(Class<?> iface) |
void |
setCursorName(String name) |
void |
setEscapeProcessing(boolean enable) |
void |
setFetchDirection(int direction) |
void |
setFetchSize(int rows) |
void |
setLargeMaxRows(long max) |
void |
setMaxFieldSize(int max) |
void |
setMaxRows(int max) |
void |
setPoolable(boolean poolable) |
void |
setPrepareThreshold(int newThreshold)
Sets the reuse threshold for using server-prepared statements.
|
void |
setQueryTimeout(int seconds) |
void |
setQueryTimeoutMs(long millis)
Sets the queryTimeout limit.
|
void |
setUseServerPrepare(boolean flag)
Turn on the use of prepared statements in the server (server side prepared statements are
unrelated to jdbc PreparedStatements) As of build 302, this method is equivalent to
setPrepareThreshold(1) . |
protected void |
transformQueriesAndParameters() |
<T> T |
unwrap(Class<T> iface) |
void |
updateStatementCancleState(com.amazon.redshift.jdbc.StatementCancelState oldState,
com.amazon.redshift.jdbc.StatementCancelState newState)
Internal use only.
|
protected boolean |
wantsHoldableResultSet() |
protected boolean |
wantsScrollableResultSet() |
protected ArrayList<ParameterList> batchParameters
protected final int resultsettype
protected final int concurrency
protected int fetchdirection
protected int autoGeneratedKeys
protected boolean wantsGeneratedKeysOnce
public boolean wantsGeneratedKeysAlways
protected final BaseConnection connection
protected volatile com.amazon.redshift.jdbc.RedshiftWarningWrapper warnings
protected int maxrows
protected int fetchSize
protected long timeout
protected boolean replaceProcessingEnabled
protected ResultWrapper result
protected volatile ResultWrapper firstUnclosedResult
protected ResultWrapper generatedKeys
protected int mPrepareThreshold
protected int maxFieldSize
public ResultSet createResultSet(Query originalQuery, Field[] fields, List<Tuple> tuples, ResultCursor cursor, RedshiftRowsBlockingQueue<Tuple> queueTuples, int[] rowCount, Thread ringBufferThread) throws SQLException
BaseStatement
createResultSet
in interface BaseStatement
originalQuery
- the query that generated this resultset; used when dealing with updateable
resultsetsfields
- the column metadata for the resultsettuples
- the resultset datacursor
- the cursor to use to retrieve more data from the server; if null, no additional
data is 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.SQLException
- if something goes wrongpublic BaseConnection getRedshiftConnection()
public String getFetchingCursorName()
public int getFetchSize()
getFetchSize
in interface Statement
protected boolean wantsScrollableResultSet()
protected boolean wantsHoldableResultSet()
public void updateStatementCancleState(com.amazon.redshift.jdbc.StatementCancelState oldState, com.amazon.redshift.jdbc.StatementCancelState newState)
oldState
- old state of the statementnewState
- new state of the statementpublic ResultSet executeQuery(String sql) throws SQLException
executeQuery
in interface Statement
SQLException
protected ResultSet getSingleResultSet() throws SQLException
SQLException
public int executeUpdate(String sql) throws SQLException
executeUpdate
in interface Statement
SQLException
protected final void checkNoResultUpdate() throws SQLException
SQLException
public boolean execute(String sql) throws SQLException
execute
in interface Statement
SQLException
public boolean executeWithFlags(String sql, int flags) throws SQLException
BaseStatement
executeWithFlags
in interface BaseStatement
sql
- the query to execute (JDBC-style query)flags
- additional QueryExecutor
flags for execution; these are bitwise-ORed into
the default flags.SQLException
- if something goes wrong.public boolean executeWithFlags(CachedQuery simpleQuery, int flags) throws SQLException
BaseStatement
executeWithFlags
in interface BaseStatement
simpleQuery
- the query to execute (native to Redshift)flags
- additional QueryExecutor
flags for execution; these are bitwise-ORed into
the default flags.SQLException
- if something goes wrong.public boolean executeWithFlags(int flags) throws SQLException
BaseStatement
executeWithFlags
in interface BaseStatement
flags
- additional QueryExecutor
flags for execution; these are bitwise-ORed into
the default flags.SQLException
- if something goes wrong.protected void closeForNextExecution() throws SQLException
SQLException
protected boolean isOneShotQuery(CachedQuery cachedQuery)
cachedQuery
- to check (null if current query)protected final void execute(CachedQuery cachedQuery, ParameterList queryParameters, int flags) throws SQLException
SQLException
public void setCursorName(String name) throws SQLException
setCursorName
in interface Statement
SQLException
public int getUpdateCount() throws SQLException
getUpdateCount
in interface Statement
SQLException
public boolean getMoreResults() throws SQLException
getMoreResults
in interface Statement
SQLException
public int getMaxRows() throws SQLException
getMaxRows
in interface Statement
SQLException
public void setMaxRows(int max) throws SQLException
setMaxRows
in interface Statement
SQLException
public void setEscapeProcessing(boolean enable) throws SQLException
setEscapeProcessing
in interface Statement
SQLException
public int getQueryTimeout() throws SQLException
getQueryTimeout
in interface Statement
SQLException
public void setQueryTimeout(int seconds) throws SQLException
setQueryTimeout
in interface Statement
SQLException
public long getQueryTimeoutMs() throws SQLException
SQLException
- if a database access error occurspublic void setQueryTimeoutMs(long millis) throws SQLException
millis
- - the new query timeout limit in millisecondsSQLException
- if a database access error occurspublic void addWarning(SQLWarning warn)
Either initializes new warning wrapper, or adds warning onto the chain.
Although warnings are expected to be added sequentially, the warnings chain may be cleared
concurrently at any time via clearWarnings()
, therefore it is possible that a warning
added via this method is placed onto the end of the previous warning chain
warn
- warning to addpublic SQLWarning getWarnings() throws SQLException
getWarnings
in interface Statement
SQLException
public int getMaxFieldSize() throws SQLException
getMaxFieldSize
in interface Statement
SQLException
public void setMaxFieldSize(int max) throws SQLException
setMaxFieldSize
in interface Statement
SQLException
public void clearWarnings() throws SQLException
Clears the warning chain.
Note that while it is safe to clear warnings while the query is executing, warnings that are
added between calls to getWarnings()
and #clearWarnings() may be missed.
Therefore you should hold a reference to the tail of the previous warning chain
and verify if its SQLWarning.getNextWarning()
value is holds any new value.
clearWarnings
in interface Statement
SQLException
public ResultSet getResultSet() throws SQLException
getResultSet
in interface Statement
SQLException
public final void close() throws SQLException
Statement
is automatically closed when it is garbage
collected, it is better to close it explicitly to lower resource consumption.
close
in interface AutoCloseable
close
in interface Statement
SQLException
protected void closeImpl() throws SQLException
close()
calls.SQLException
- in case of errorpublic long getLastOID() throws SQLException
RedshiftStatement
getLastOID
in interface RedshiftStatement
SQLException
- if something goes wrongpublic void setPrepareThreshold(int newThreshold) throws SQLException
RedshiftStatement
Sets the reuse threshold for using server-prepared statements.
If threshold
is a non-zero value N, the Nth and subsequent reuses of a
PreparedStatement will use server-side prepare.
If threshold
is zero, server-side prepare will not be used.
The reuse threshold is only used by PreparedStatement and CallableStatement objects; it is ignored for plain Statements.
setPrepareThreshold
in interface RedshiftStatement
newThreshold
- the new threshold for this statementSQLException
- if an exception occurs while changing the thresholdpublic int getPrepareThreshold()
RedshiftStatement
getPrepareThreshold
in interface RedshiftStatement
RedshiftStatement.setPrepareThreshold(int)
public void setUseServerPrepare(boolean flag) throws SQLException
RedshiftStatement
setPrepareThreshold(1)
.setUseServerPrepare
in interface RedshiftStatement
flag
- use server prepareSQLException
- if something goes wrongpublic boolean isUseServerPrepare()
RedshiftStatement
true
indicates that the next execution of the statement will be done as a
server-prepared statement, assuming the underlying protocol supports it.isUseServerPrepare
in interface RedshiftStatement
protected void checkClosed() throws SQLException
SQLException
public void addBatch(String sql) throws SQLException
addBatch
in interface Statement
SQLException
public void clearBatch() throws SQLException
clearBatch
in interface Statement
SQLException
protected BatchResultHandler createBatchHandler(Query[] queries, ParameterList[] parameterLists)
public int[] executeBatch() throws SQLException
executeBatch
in interface Statement
SQLException
public void cancel() throws SQLException
cancel
in interface Statement
SQLException
public Connection getConnection() throws SQLException
getConnection
in interface Statement
SQLException
public int getFetchDirection() throws SQLException
getFetchDirection
in interface Statement
SQLException
public int getResultSetConcurrency() throws SQLException
getResultSetConcurrency
in interface Statement
SQLException
public int getResultSetType() throws SQLException
getResultSetType
in interface Statement
SQLException
public void setFetchDirection(int direction) throws SQLException
setFetchDirection
in interface Statement
SQLException
public void setFetchSize(int rows) throws SQLException
setFetchSize
in interface Statement
SQLException
protected boolean getForceBinaryTransfer()
public long getLargeUpdateCount() throws SQLException
getLargeUpdateCount
in interface Statement
SQLException
public void setLargeMaxRows(long max) throws SQLException
setLargeMaxRows
in interface Statement
SQLException
public long getLargeMaxRows() throws SQLException
getLargeMaxRows
in interface Statement
SQLException
public long[] executeLargeBatch() throws SQLException
executeLargeBatch
in interface Statement
SQLException
public long executeLargeUpdate(String sql) throws SQLException
executeLargeUpdate
in interface Statement
SQLException
public long executeLargeUpdate(String sql, int autoGeneratedKeys) throws SQLException
executeLargeUpdate
in interface Statement
SQLException
public long executeLargeUpdate(String sql, int[] columnIndexes) throws SQLException
executeLargeUpdate
in interface Statement
SQLException
public long executeLargeUpdate(String sql, String[] columnNames) throws SQLException
executeLargeUpdate
in interface Statement
SQLException
public boolean isClosed() throws SQLException
isClosed
in interface Statement
SQLException
public void setPoolable(boolean poolable) throws SQLException
setPoolable
in interface Statement
SQLException
public boolean isPoolable() throws SQLException
isPoolable
in interface Statement
SQLException
public boolean isWrapperFor(Class<?> iface) throws SQLException
isWrapperFor
in interface Wrapper
SQLException
public <T> T unwrap(Class<T> iface) throws SQLException
unwrap
in interface Wrapper
SQLException
public void closeOnCompletion() throws SQLException
closeOnCompletion
in interface Statement
SQLException
public boolean isCloseOnCompletion() throws SQLException
isCloseOnCompletion
in interface Statement
SQLException
protected void checkCompletion() throws SQLException
SQLException
public boolean getMoreResults(int current) throws SQLException
getMoreResults
in interface Statement
SQLException
public ResultSet getGeneratedKeys() throws SQLException
getGeneratedKeys
in interface Statement
SQLException
public int executeUpdate(String sql, int autoGeneratedKeys) throws SQLException
executeUpdate
in interface Statement
SQLException
public int executeUpdate(String sql, int[] columnIndexes) throws SQLException
executeUpdate
in interface Statement
SQLException
public int executeUpdate(String sql, String[] columnNames) throws SQLException
executeUpdate
in interface Statement
SQLException
public boolean execute(String sql, int autoGeneratedKeys) throws SQLException
execute
in interface Statement
SQLException
public boolean execute(String sql, int[] columnIndexes) throws SQLException
execute
in interface Statement
SQLException
public boolean execute(String sql, String[] columnNames) throws SQLException
execute
in interface Statement
SQLException
public int getResultSetHoldability() throws SQLException
getResultSetHoldability
in interface Statement
SQLException
public ResultSet createDriverResultSet(Field[] fields, List<Tuple> tuples) throws SQLException
BaseStatement
createDriverResultSet
in interface BaseStatement
fields
- the column metadata for the resultsettuples
- the resultset dataSQLException
- if something goes wrongprotected void transformQueriesAndParameters() throws SQLException
SQLException
Copyright © 2024 Amazon.com Inc.. All rights reserved.