Class PgStatement
- All Implemented Interfaces:
AutoCloseable,Statement,Wrapper,BaseStatement,PGStatement
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclassResultHandler implementations for updates, queries, and either-or. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanprotected @Nullable ArrayList<@Nullable ParameterList>protected final intprotected final PgConnectionprotected intprotected intNumber of rows to get in a batch.protected @Nullable @GuardedBy("<self>") ResultWrapperThe first unclosed result.protected @Nullable ResultWrapperResults returned by a statement that wants generated keys.protected final ResourceLockprotected intprotected intMaximum number of rows to return, 0 = unlimited.protected intprotected booleanprotected @Nullable ResultWrapperThe current results.protected final intprotected longTimeout (in milliseconds) for a query.booleanWas this PreparedStatement created to return generated keys for every execution? This is set at creation time and never cleared by execution.protected booleanDoes 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 @Nullable org.postgresql.jdbc.PSQLWarningWrapperThe warnings chain.Fields inherited from interface org.postgresql.PGStatement
DATE_NEGATIVE_INFINITY, DATE_NEGATIVE_SMALLER_INFINITY, DATE_POSITIVE_INFINITY, DATE_POSITIVE_SMALLER_INFINITYFields 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 -
Method Summary
Modifier and TypeMethodDescriptionvoidvoidaddWarning(SQLWarning warn) Either initializes new warning wrapper, or adds warning onto the chain.voidcancel()protected voidprotected voidprotected final voidvoidvoidClears the warning chain.final voidclose()Note: even thoughStatementis automatically closed when it is garbage collected, it is better to close it explicitly to lower resource consumption.protected voidprotected voidThis is guaranteed to be called exactly once even in case of concurrentclose()calls.voidprotected BatchResultHandlercreateBatchHandler(Query[] queries, @Nullable ParameterList[] parameterLists) createDriverResultSet(Field[] fields, List<Tuple> tuples) Create a synthetic resultset from data provided by the driver.createResultSet(@Nullable Query originalQuery, Field[] fields, List<Tuple> tuples, @Nullable ResultCursor cursor) Create a resultset from data retrieved from the server.booleanbooleanbooleanbooleanprotected final voidexecute(CachedQuery cachedQuery, @Nullable ParameterList queryParameters, int flags) int[]long[]longexecuteLargeUpdate(String sql) longexecuteLargeUpdate(String sql, int autoGeneratedKeys) longexecuteLargeUpdate(String sql, int[] columnIndexes) longexecuteLargeUpdate(String sql, String @Nullable [] columnNames) executeQuery(String sql) intexecuteUpdate(String sql) intexecuteUpdate(String sql, int autoGeneratedKeys) intexecuteUpdate(String sql, int[] columnIndexes) intexecuteUpdate(String sql, String @Nullable [] columnNames) booleanexecuteWithFlags(int flags) Execute a prepared query, passing additional query flags.booleanexecuteWithFlags(String sql, int flags) Execute a query, passing additional query flags.booleanexecuteWithFlags(CachedQuery simpleQuery, int flags) Execute a query, passing additional query flags.booleanGet state of adaptive fetch for statement.int@Nullable String@org.checkerframework.checker.index.qual.NonNegative intprotected booleanlonglonglongReturns the Last inserted/updated oid.intintbooleanbooleangetMoreResults(int current) intGets the server-side prepare reuse threshold in use for this statement.intlongThe queryTimeout limit is the number of milliseconds the driver will wait for a Statement to execute.@Nullable ResultSetintintintprotected ResultSetprotected TimestampUtilsint@Nullable SQLWarningbooleanisClosed()booleanprotected booleanisOneShotQuery(@Nullable CachedQuery cachedQuery) Returns true if query is unlikely to be reused.booleanbooleanChecks if this statement will be executed as a server-prepared statement.booleanisWrapperFor(Class<?> iface) voidsetAdaptiveFetch(boolean adaptiveFetch) Turn on/off adaptive fetch for statement.voidsetCursorName(String name) voidsetEscapeProcessing(boolean enable) voidsetFetchDirection(int direction) voidsetFetchSize(@org.checkerframework.checker.index.qual.NonNegative int rows) voidsetLargeMaxRows(long max) voidsetMaxFieldSize(int max) voidsetMaxRows(int max) voidsetPoolable(boolean poolable) voidsetPrepareThreshold(int newThreshold) Sets the reuse threshold for using server-prepared statements.voidsetQueryTimeout(int seconds) voidsetQueryTimeoutMs(long millis) Sets the queryTimeout limit.voidsetUseServerPrepare(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 tosetPrepareThreshold(1).protected void<T> Tprotected booleanprotected booleanMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.sql.Statement
enquoteIdentifier, enquoteLiteral, enquoteNCharLiteral, isSimpleIdentifier
-
Field Details
-
lock
-
batchStatements
-
batchParameters
-
resultsettype
protected final int resultsettype -
concurrency
protected final int concurrency -
fetchdirection
protected int fetchdirection -
wantsGeneratedKeysOnce
protected boolean wantsGeneratedKeysOnceDoes 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. -
wantsGeneratedKeysAlways
public boolean wantsGeneratedKeysAlwaysWas this PreparedStatement created to return generated keys for every execution? This is set at creation time and never cleared by execution. -
connection
-
warnings
protected volatile @Nullable org.postgresql.jdbc.PSQLWarningWrapper warningsThe warnings chain. -
maxrows
protected int maxrowsMaximum number of rows to return, 0 = unlimited. -
fetchSize
protected int fetchSizeNumber of rows to get in a batch. -
timeout
protected long timeoutTimeout (in milliseconds) for a query. -
replaceProcessingEnabled
protected boolean replaceProcessingEnabled -
result
The current results. -
firstUnclosedResult
The first unclosed result. -
generatedKeys
Results returned by a statement that wants generated keys. -
mPrepareThreshold
protected int mPrepareThreshold -
maxFieldSize
protected int maxFieldSize -
adaptiveFetch
protected boolean adaptiveFetch
-
-
Method Details
-
createResultSet
public ResultSet createResultSet(@Nullable Query originalQuery, Field[] fields, List<Tuple> tuples, @Nullable ResultCursor cursor) throws SQLException Description copied from interface:BaseStatementCreate a resultset from data retrieved from the server.- Specified by:
createResultSetin interfaceBaseStatement- Parameters:
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.- Returns:
- the new ResultSet
- Throws:
SQLException- if something goes wrong
-
getPGConnection
-
getFetchingCursorName
-
getFetchSize
public @org.checkerframework.checker.index.qual.NonNegative int getFetchSize()- Specified by:
getFetchSizein interfaceStatement
-
wantsScrollableResultSet
protected boolean wantsScrollableResultSet() -
wantsHoldableResultSet
protected boolean wantsHoldableResultSet() -
executeQuery
- Specified by:
executeQueryin interfaceStatement- Throws:
SQLException
-
getSingleResultSet
- Throws:
SQLException
-
executeUpdate
- Specified by:
executeUpdatein interfaceStatement- Throws:
SQLException
-
checkNoResultUpdate
- Throws:
SQLException
-
execute
- Specified by:
executein interfaceStatement- Throws:
SQLException
-
executeWithFlags
Description copied from interface:BaseStatementExecute a query, passing additional query flags.- Specified by:
executeWithFlagsin interfaceBaseStatement- Parameters:
sql- the query to execute (JDBC-style query)flags- additionalQueryExecutorflags for execution; these are bitwise-ORed into the default flags.- Returns:
- true if there is a result set
- Throws:
SQLException- if something goes wrong.
-
executeWithFlags
Description copied from interface:BaseStatementExecute a query, passing additional query flags.- Specified by:
executeWithFlagsin interfaceBaseStatement- Parameters:
simpleQuery- the query to execute (native to PostgreSQL)flags- additionalQueryExecutorflags for execution; these are bitwise-ORed into the default flags.- Returns:
- true if there is a result set
- Throws:
SQLException- if something goes wrong.
-
executeWithFlags
Description copied from interface:BaseStatementExecute a prepared query, passing additional query flags.- Specified by:
executeWithFlagsin interfaceBaseStatement- Parameters:
flags- additionalQueryExecutorflags for execution; these are bitwise-ORed into the default flags.- Returns:
- true if there is a result set
- Throws:
SQLException- if something goes wrong.
-
closeForNextExecution
- Throws:
SQLException
-
isOneShotQuery
Returns true if query is unlikely to be reused.- Parameters:
cachedQuery- to check (null if current query)- Returns:
- true if query is unlikely to be reused
-
execute
protected final void execute(CachedQuery cachedQuery, @Nullable ParameterList queryParameters, int flags) throws SQLException - Throws:
SQLException
-
setCursorName
- Specified by:
setCursorNamein interfaceStatement- Throws:
SQLException
-
getUpdateCount
- Specified by:
getUpdateCountin interfaceStatement- Throws:
SQLException
-
getMoreResults
- Specified by:
getMoreResultsin interfaceStatement- Throws:
SQLException
-
getMaxRows
- Specified by:
getMaxRowsin interfaceStatement- Throws:
SQLException
-
setMaxRows
- Specified by:
setMaxRowsin interfaceStatement- Throws:
SQLException
-
setEscapeProcessing
- Specified by:
setEscapeProcessingin interfaceStatement- Throws:
SQLException
-
getQueryTimeout
- Specified by:
getQueryTimeoutin interfaceStatement- Throws:
SQLException
-
setQueryTimeout
- Specified by:
setQueryTimeoutin interfaceStatement- Throws:
SQLException
-
getQueryTimeoutMs
The queryTimeout limit is the number of milliseconds the driver will wait for a Statement to execute. If the limit is exceeded, a SQLException is thrown.- Returns:
- the current query timeout limit in milliseconds; 0 = unlimited
- Throws:
SQLException- if a database access error occurs
-
setQueryTimeoutMs
Sets the queryTimeout limit.- Parameters:
millis- - the new query timeout limit in milliseconds- Throws:
SQLException- if a database access error occurs
-
addWarning
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- Parameters:
warn- warning to add
-
getWarnings
- Specified by:
getWarningsin interfaceStatement- Throws:
SQLException
-
getMaxFieldSize
- Specified by:
getMaxFieldSizein interfaceStatement- Throws:
SQLException
-
setMaxFieldSize
- Specified by:
setMaxFieldSizein interfaceStatement- Throws:
SQLException
-
clearWarnings
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 itsSQLWarning.getNextWarning()value is holds any new value.- Specified by:
clearWarningsin interfaceStatement- Throws:
SQLException
-
getResultSet
- Specified by:
getResultSetin interfaceStatement- Throws:
SQLException
-
close
Note: even thoughStatementis automatically closed when it is garbage collected, it is better to close it explicitly to lower resource consumption.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceStatement- Throws:
SQLException
-
closeImpl
This is guaranteed to be called exactly once even in case of concurrentclose()calls.- Throws:
SQLException- in case of error
-
getLastOID
Description copied from interface:PGStatementReturns the Last inserted/updated oid.- Specified by:
getLastOIDin interfacePGStatement- Returns:
- OID of last insert
- Throws:
SQLException- if something goes wrong
-
setPrepareThreshold
Description copied from interface:PGStatementSets the reuse threshold for using server-prepared statements.
If
thresholdis a non-zero value N, the Nth and subsequent reuses of a PreparedStatement will use server-side prepare.If
thresholdis 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.
- Specified by:
setPrepareThresholdin interfacePGStatement- Parameters:
newThreshold- the new threshold for this statement- Throws:
SQLException- if an exception occurs while changing the threshold
-
getPrepareThreshold
public int getPrepareThreshold()Description copied from interface:PGStatementGets the server-side prepare reuse threshold in use for this statement.- Specified by:
getPrepareThresholdin interfacePGStatement- Returns:
- the current threshold
- See Also:
-
setUseServerPrepare
Description copied from interface:PGStatementTurn 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 tosetPrepareThreshold(1).- Specified by:
setUseServerPreparein interfacePGStatement- Parameters:
flag- use server prepare- Throws:
SQLException- if something goes wrong
-
isUseServerPrepare
public boolean isUseServerPrepare()Description copied from interface:PGStatementChecks if this statement will be executed as a server-prepared statement. A return value oftrueindicates that the next execution of the statement will be done as a server-prepared statement, assuming the underlying protocol supports it.- Specified by:
isUseServerPreparein interfacePGStatement- Returns:
- true if the next reuse of this statement will use a server-prepared statement
-
checkClosed
- Throws:
SQLException
-
addBatch
- Specified by:
addBatchin interfaceStatement- Throws:
SQLException
-
clearBatch
- Specified by:
clearBatchin interfaceStatement- Throws:
SQLException
-
createBatchHandler
protected BatchResultHandler createBatchHandler(Query[] queries, @Nullable ParameterList[] parameterLists) -
executeBatch
- Specified by:
executeBatchin interfaceStatement- Throws:
SQLException
-
cancel
- Specified by:
cancelin interfaceStatement- Throws:
SQLException
-
getConnection
- Specified by:
getConnectionin interfaceStatement- Throws:
SQLException
-
getFetchDirection
public int getFetchDirection()- Specified by:
getFetchDirectionin interfaceStatement
-
getResultSetConcurrency
public int getResultSetConcurrency()- Specified by:
getResultSetConcurrencyin interfaceStatement
-
getResultSetType
public int getResultSetType()- Specified by:
getResultSetTypein interfaceStatement
-
setFetchDirection
- Specified by:
setFetchDirectionin interfaceStatement- Throws:
SQLException
-
setFetchSize
public void setFetchSize(@org.checkerframework.checker.index.qual.NonNegative int rows) throws SQLException - Specified by:
setFetchSizein interfaceStatement- Throws:
SQLException
-
getForceBinaryTransfer
protected boolean getForceBinaryTransfer() -
getLargeUpdateCount
- Specified by:
getLargeUpdateCountin interfaceStatement- Throws:
SQLException
-
setLargeMaxRows
- Specified by:
setLargeMaxRowsin interfaceStatement- Throws:
SQLException
-
getLargeMaxRows
- Specified by:
getLargeMaxRowsin interfaceStatement- Throws:
SQLException
-
executeLargeBatch
- Specified by:
executeLargeBatchin interfaceStatement- Throws:
SQLException
-
executeLargeUpdate
- Specified by:
executeLargeUpdatein interfaceStatement- Throws:
SQLException
-
executeLargeUpdate
- Specified by:
executeLargeUpdatein interfaceStatement- Throws:
SQLException
-
executeLargeUpdate
- Specified by:
executeLargeUpdatein interfaceStatement- Throws:
SQLException
-
executeLargeUpdate
- Specified by:
executeLargeUpdatein interfaceStatement- Throws:
SQLException
-
isClosed
- Specified by:
isClosedin interfaceStatement- Throws:
SQLException
-
setPoolable
- Specified by:
setPoolablein interfaceStatement- Throws:
SQLException
-
isPoolable
- Specified by:
isPoolablein interfaceStatement- Throws:
SQLException
-
isWrapperFor
- Specified by:
isWrapperForin interfaceWrapper- Throws:
SQLException
-
unwrap
- Specified by:
unwrapin interfaceWrapper- Throws:
SQLException
-
closeOnCompletion
- Specified by:
closeOnCompletionin interfaceStatement- Throws:
SQLException
-
isCloseOnCompletion
- Specified by:
isCloseOnCompletionin interfaceStatement- Throws:
SQLException
-
checkCompletion
- Throws:
SQLException
-
getMoreResults
- Specified by:
getMoreResultsin interfaceStatement- Throws:
SQLException
-
getGeneratedKeys
- Specified by:
getGeneratedKeysin interfaceStatement- Throws:
SQLException
-
executeUpdate
- Specified by:
executeUpdatein interfaceStatement- Throws:
SQLException
-
executeUpdate
- Specified by:
executeUpdatein interfaceStatement- Throws:
SQLException
-
executeUpdate
- Specified by:
executeUpdatein interfaceStatement- Throws:
SQLException
-
execute
- Specified by:
executein interfaceStatement- Throws:
SQLException
-
execute
- Specified by:
executein interfaceStatement- Throws:
SQLException
-
execute
- Specified by:
executein interfaceStatement- Throws:
SQLException
-
getResultSetHoldability
- Specified by:
getResultSetHoldabilityin interfaceStatement- Throws:
SQLException
-
createDriverResultSet
Description copied from interface:BaseStatementCreate a synthetic resultset from data provided by the driver.- Specified by:
createDriverResultSetin interfaceBaseStatement- Parameters:
fields- the column metadata for the resultsettuples- the resultset data- Returns:
- the new ResultSet
- Throws:
SQLException- if something goes wrong
-
transformQueriesAndParameters
- Throws:
SQLException
-
setAdaptiveFetch
public void setAdaptiveFetch(boolean adaptiveFetch) Description copied from interface:PGStatementTurn on/off adaptive fetch for statement. Existing resultSets won't be affected by change here.- Specified by:
setAdaptiveFetchin interfacePGStatement- Parameters:
adaptiveFetch- desired state of adaptive fetch.
-
getAdaptiveFetch
public boolean getAdaptiveFetch()Description copied from interface:PGStatementGet state of adaptive fetch for statement.- Specified by:
getAdaptiveFetchin interfacePGStatement- Returns:
- state of adaptive fetch (turned on or off)
-
getTimestampUtils
-