public abstract class QueryExecutorBase extends Object implements QueryExecutor
| Modifier and Type | Field and Description |
|---|---|
protected boolean |
logServerErrorDetail |
protected PGStream |
pgStream |
MAX_SAVE_POINTS, QUERY_BOTH_ROWS_AND_STATUS, QUERY_DESCRIBE_ONLY, QUERY_DISALLOW_BATCHING, QUERY_EXECUTE_AS_SIMPLE, QUERY_FORCE_DESCRIBE_PORTAL, QUERY_FORWARD_CURSOR, QUERY_NO_BINARY_TRANSFER, QUERY_NO_METADATA, QUERY_NO_RESULTS, QUERY_ONESHOT, QUERY_READ_ONLY_HINT, QUERY_SUPPRESS_BEGIN| Modifier | Constructor and Description |
|---|---|
protected |
QueryExecutorBase(PGStream pgStream,
String user,
String database,
int cancelSignalTimeout,
Properties info) |
| Modifier and Type | Method and Description |
|---|---|
void |
abort()
Abort at network level without sending the Terminate message to the backend.
|
void |
addNotification(PGNotification notification) |
void |
addWarning(SQLWarning newWarning) |
CachedQuery |
borrowCallableQuery(String sql) |
CachedQuery |
borrowQuery(String sql) |
CachedQuery |
borrowQueryByKey(Object key) |
CachedQuery |
borrowReturningQuery(String sql,
String[] columnNames) |
void |
close()
Close this connection cleanly.
|
CachedQuery |
createQuery(String sql,
boolean escapeProcessing,
boolean isParameterized,
String... columnNames) |
CachedQuery |
createQueryByKey(Object key) |
Object |
createQueryKey(String sql,
boolean escapeProcessing,
boolean isParameterized,
String... columnNames) |
AutoSave |
getAutoSave() |
int |
getBackendPID()
Return the process ID (PID) of the backend server process handling this connection.
|
String |
getDatabase() |
Encoding |
getEncoding() |
EscapeSyntaxCallMode |
getEscapeSyntaxCallMode() |
HostSpec |
getHostSpec() |
int |
getNetworkTimeout() |
PGNotification[] |
getNotifications()
Retrieve and clear the set of asynchronous notifications pending on this connection.
|
@Nullable String |
getParameterStatus(String parameterName) |
Map<String,String> |
getParameterStatuses() |
PreferQueryMode |
getPreferQueryMode() |
String |
getServerVersion()
Return the server version from the server_version GUC.
|
int |
getServerVersionNum()
Get a machine-readable server version.
|
boolean |
getStandardConformingStrings()
Returns whether the server treats string-literals according to the SQL standard or if it uses
traditional PostgreSQL escaping rules.
|
TransactionState |
getTransactionState()
Get the current transaction state of this connection.
|
String |
getUser() |
@Nullable SQLWarning |
getWarnings()
Retrieve and clear the chain of warnings accumulated on this connection.
|
protected boolean |
hasNotifications() |
boolean |
isClosed()
Check if this connection is closed.
|
boolean |
isColumnSanitiserDisabled() |
boolean |
isFlushCacheOnDeallocate() |
boolean |
isReWriteBatchedInsertsEnabled() |
protected void |
onParameterStatus(String parameterName,
String parameterStatus)
Update the parameter status map in response to a new ParameterStatus
wire protocol message.
|
void |
releaseQuery(CachedQuery cachedQuery) |
protected abstract void |
sendCloseMessage() |
void |
sendQueryCancel()
Sends a query cancellation for this connection.
|
void |
setAutoSave(AutoSave autoSave) |
void |
setBackendKeyData(int cancelPid,
int cancelKey) |
void |
setEncoding(Encoding encoding) |
void |
setFlushCacheOnDeallocate(boolean flushCacheOnDeallocate)
By default, the connection resets statement cache in case deallocate all/discard all
message is observed.
|
void |
setNetworkTimeout(int milliseconds) |
void |
setServerVersion(String serverVersion) |
void |
setServerVersionNum(int serverVersionNum) |
void |
setStandardConformingStrings(boolean value) |
void |
setTransactionState(TransactionState state) |
boolean |
willHealOnRetry(SQLException e) |
protected boolean |
willHealViaReparse(SQLException e) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitaddQueryToAdaptiveFetchCache, createFastpathParameters, createSimpleQuery, execute, execute, execute, execute, fastpathCall, fetch, getAdaptiveFetch, getAdaptiveFetchSize, getApplicationName, getIntegerDateTimes, getProtocolVersion, getReplicationProtocol, getTimeZone, processNotifies, processNotifies, removeQueryFromAdaptiveFetchCache, setAdaptiveFetch, setBinaryReceiveOids, setBinarySendOids, startCopy, wrapuseBinaryForReceive, useBinaryForSendprotected final PGStream pgStream
protected final boolean logServerErrorDetail
protected QueryExecutorBase(PGStream pgStream, String user, String database, int cancelSignalTimeout, Properties info) throws SQLException
SQLExceptionprotected abstract void sendCloseMessage()
throws IOException
IOExceptionpublic void setNetworkTimeout(int milliseconds)
throws IOException
setNetworkTimeout in interface QueryExecutorIOExceptionpublic int getNetworkTimeout()
throws IOException
getNetworkTimeout in interface QueryExecutorIOExceptionpublic HostSpec getHostSpec()
getHostSpec in interface QueryExecutorpublic String getUser()
getUser in interface QueryExecutorpublic String getDatabase()
getDatabase in interface QueryExecutorpublic void setBackendKeyData(int cancelPid,
int cancelKey)
public int getBackendPID()
QueryExecutorgetBackendPID in interface QueryExecutorpublic void abort()
QueryExecutorabort in interface QueryExecutorpublic void close()
QueryExecutorclose in interface QueryExecutorpublic boolean isClosed()
QueryExecutorisClosed in interface QueryExecutorpublic void sendQueryCancel()
throws SQLException
QueryExecutorsendQueryCancel in interface QueryExecutorSQLException - if something goes wrong.public void addWarning(SQLWarning newWarning)
public void addNotification(PGNotification notification)
public PGNotification[] getNotifications() throws SQLException
QueryExecutorgetNotifications in interface QueryExecutorSQLException - if and error occurs while fetching notificationspublic @Nullable SQLWarning getWarnings()
QueryExecutorgetWarnings in interface QueryExecutorpublic String getServerVersion()
QueryExecutorReturn the server version from the server_version GUC.
Note that there's no requirement for this to be numeric or of the form x.y.z. PostgreSQL development releases usually have the format x.ydevel e.g. 9.4devel; betas usually x.ybetan e.g. 9.4beta1. The --with-extra-version configure option may add an arbitrary string to this.
Don't use this string for logic, only use it when displaying the server version to the user. Prefer getServerVersionNum() for all logic purposes.
getServerVersion in interface QueryExecutorpublic int getServerVersionNum()
QueryExecutorGet a machine-readable server version.
This returns the value of the server_version_num GUC. If no such GUC exists, it falls back on attempting to parse the text server version for the major version. If there's no minor version (e.g. a devel or beta release) then the minor version is set to zero. If the version could not be parsed, zero is returned.
getServerVersionNum in interface QueryExecutorpublic void setServerVersion(String serverVersion)
public void setServerVersionNum(int serverVersionNum)
public void setTransactionState(TransactionState state)
public void setStandardConformingStrings(boolean value)
public boolean getStandardConformingStrings()
QueryExecutorstandard_conforming_strings server variable.getStandardConformingStrings in interface QueryExecutorpublic TransactionState getTransactionState()
QueryExecutorgetTransactionState in interface QueryExecutorpublic void setEncoding(Encoding encoding) throws IOException
IOExceptionpublic Encoding getEncoding()
getEncoding in interface QueryExecutorpublic boolean isReWriteBatchedInsertsEnabled()
isReWriteBatchedInsertsEnabled in interface QueryExecutorpublic final CachedQuery borrowQuery(String sql) throws SQLException
borrowQuery in interface QueryExecutorSQLExceptionpublic final CachedQuery borrowCallableQuery(String sql) throws SQLException
borrowCallableQuery in interface QueryExecutorSQLExceptionpublic final CachedQuery borrowReturningQuery(String sql, String[] columnNames) throws SQLException
borrowReturningQuery in interface QueryExecutorSQLExceptionpublic CachedQuery borrowQueryByKey(Object key) throws SQLException
borrowQueryByKey in interface QueryExecutorSQLExceptionpublic void releaseQuery(CachedQuery cachedQuery)
releaseQuery in interface QueryExecutorpublic final Object createQueryKey(String sql, boolean escapeProcessing, boolean isParameterized, String... columnNames)
createQueryKey in interface QueryExecutorpublic CachedQuery createQueryByKey(Object key) throws SQLException
createQueryByKey in interface QueryExecutorSQLExceptionpublic final CachedQuery createQuery(String sql, boolean escapeProcessing, boolean isParameterized, String... columnNames) throws SQLException
createQuery in interface QueryExecutorSQLExceptionpublic boolean isColumnSanitiserDisabled()
isColumnSanitiserDisabled in interface QueryExecutorpublic EscapeSyntaxCallMode getEscapeSyntaxCallMode()
getEscapeSyntaxCallMode in interface QueryExecutorpublic PreferQueryMode getPreferQueryMode()
getPreferQueryMode in interface QueryExecutorpublic AutoSave getAutoSave()
getAutoSave in interface QueryExecutorpublic void setAutoSave(AutoSave autoSave)
setAutoSave in interface QueryExecutorprotected boolean willHealViaReparse(SQLException e)
public boolean willHealOnRetry(SQLException e)
willHealOnRetry in interface QueryExecutorpublic boolean isFlushCacheOnDeallocate()
public void setFlushCacheOnDeallocate(boolean flushCacheOnDeallocate)
QueryExecutorsetFlushCacheOnDeallocate in interface QueryExecutorflushCacheOnDeallocate - true if statement cache should be reset when "deallocate/discard" message observedprotected boolean hasNotifications()
public final Map<String,String> getParameterStatuses()
getParameterStatuses in interface QueryExecutorpublic final @Nullable String getParameterStatus(String parameterName)
getParameterStatus in interface QueryExecutorprotected void onParameterStatus(String parameterName, String parameterStatus)
The server sends ParameterStatus messages when GUC_REPORT settings are initially assigned and whenever they change.
A future version may invoke a client-defined listener class at this point, so this should be the only access path.
Keys are case-insensitive and case-preserving.
The server doesn't provide a way to report deletion of a reportable parameter so we don't expose one here.
parameterName - case-insensitive case-preserving name of parameter to create or updateparameterStatus - new value of parameterPGConnection.getParameterStatuses(),
PGConnection.getParameterStatus(java.lang.String)Copyright © 1997-2021 PostgreSQL Global Development Group. All Rights Reserved.