public class QueryExecutorImpl extends QueryExecutorBase
logServerErrorDetail, 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
Constructor and Description |
---|
QueryExecutorImpl(PGStream pgStream,
String user,
String database,
int cancelSignalTimeout,
Properties info) |
Modifier and Type | Method and Description |
---|---|
void |
addQueryToAdaptiveFetchCache(boolean adaptiveFetch,
@NonNull ResultCursor cursor)
Add query to adaptive fetch cache inside QueryExecutor.
|
void |
cancelCopy(CopyOperationImpl op)
Finishes a copy operation and unlocks connection discarding any exchanged data.
|
ParameterList |
createFastpathParameters(int count)
Create a new ParameterList implementation suitable for invoking a fastpath function via
QueryExecutor.fastpathCall(int, org.postgresql.core.ParameterList, boolean) . |
Query |
createSimpleQuery(String sql)
Create an unparameterized Query object suitable for execution by this QueryExecutor.
|
void |
doSubprotocolBegin() |
long |
endCopy(CopyOperationImpl op)
Finishes writing to copy and unlocks connection.
|
void |
execute(Query[] queries,
@Nullable ParameterList[] parameterLists,
BatchResultHandler batchHandler,
int maxRows,
int fetchSize,
int flags)
Execute several Query, passing results to a provided ResultHandler.
|
void |
execute(Query[] queries,
@Nullable ParameterList[] parameterLists,
BatchResultHandler batchHandler,
int maxRows,
int fetchSize,
int flags,
boolean adaptiveFetch)
Execute several Query with adaptive fetch, passing results to a provided ResultHandler.
|
void |
execute(Query query,
@Nullable ParameterList parameters,
ResultHandler handler,
int maxRows,
int fetchSize,
int flags)
Execute a Query, passing results to a provided ResultHandler.
|
void |
execute(Query query,
@Nullable ParameterList parameters,
ResultHandler handler,
int maxRows,
int fetchSize,
int flags,
boolean adaptiveFetch)
Execute a Query with adaptive fetch, passing results to a provided ResultHandler.
|
byte[] |
fastpathCall(int fnid,
ParameterList parameters,
boolean suppressBegin)
Invoke a backend function via the fastpath interface.
|
void |
fetch(ResultCursor cursor,
ResultHandler handler,
int fetchSize,
boolean adaptiveFetch)
Fetch additional rows from a cursor.
|
void |
flushCopy(CopyOperationImpl op) |
boolean |
getAdaptiveFetch()
Get state of adaptive fetch inside QueryExecutor.
|
int |
getAdaptiveFetchSize(boolean adaptiveFetch,
ResultCursor cursor)
Get fetch size computed by adaptive fetch size for given query.
|
String |
getApplicationName()
Returns application_name connection property.
|
boolean |
getIntegerDateTimes()
Returns true if server uses integer instead of double for binary date and time encodings.
|
int |
getProtocolVersion() |
ReplicationProtocol |
getReplicationProtocol() |
@Nullable TimeZone |
getTimeZone()
Returns backend timezone in java format.
|
void |
processNotifies()
Prior to attempting to retrieve notifications, we need to pull any recently received
notifications off of the network buffers.
|
void |
processNotifies(int timeoutMillis)
Prior to attempting to retrieve notifications, we need to pull any recently received
notifications off of the network buffers.
|
protected void |
processResults(ResultHandler handler,
int flags) |
protected void |
processResults(ResultHandler handler,
int flags,
boolean adaptiveFetch) |
void |
readStartupMessages() |
void |
receiveParameterStatus() |
void |
removeQueryFromAdaptiveFetchCache(boolean adaptiveFetch,
@NonNull ResultCursor cursor)
Remove query from adaptive fetch cache inside QueryExecutor
|
protected void |
sendCloseMessage() |
void |
setAdaptiveFetch(boolean adaptiveFetch)
Set state of adaptive fetch inside QueryExecutor.
|
void |
setApplicationName(String applicationName) |
void |
setBinaryReceiveOids(Set<Integer> oids)
Sets the oids that should be received using binary encoding.
|
void |
setBinarySendOids(Set<Integer> oids)
Sets the oids that should be sent using binary encoding.
|
void |
setTimeZone(TimeZone timeZone) |
CopyOperation |
startCopy(String sql,
boolean suppressBegin)
Sends given query to BE to start, initialize and lock connection for a CopyOperation.
|
boolean |
useBinaryForReceive(int oid)
Returns if given oid should be received in binary format.
|
boolean |
useBinaryForSend(int oid)
Returns if given oid should be sent in binary format.
|
Query |
wrap(List<NativeQuery> queries)
Wrap given native query into a ready for execution format.
|
void |
writeToCopy(CopyOperationImpl op,
byte[] data,
int off,
int siz)
Sends data during a live COPY IN operation.
|
void |
writeToCopy(CopyOperationImpl op,
ByteStreamWriter from)
Sends data during a live COPY IN operation.
|
abort, addNotification, addWarning, borrowCallableQuery, borrowQuery, borrowQueryByKey, borrowReturningQuery, close, createQuery, createQueryByKey, createQueryKey, getAutoSave, getBackendPID, getDatabase, getEncoding, getEscapeSyntaxCallMode, getHostSpec, getNetworkTimeout, getNotifications, getParameterStatus, getParameterStatuses, getPreferQueryMode, getQuoteReturningIdentifiers, getServerVersion, getServerVersionNum, getStandardConformingStrings, getTransactionState, getUser, getWarnings, hasNotifications, isClosed, isColumnSanitiserDisabled, isFlushCacheOnDeallocate, isReWriteBatchedInsertsEnabled, onParameterStatus, releaseQuery, sendQueryCancel, setAutoSave, setBackendKeyData, setEncoding, setFlushCacheOnDeallocate, setNetworkTimeout, setServerVersion, setServerVersionNum, setStandardConformingStrings, setTransactionState, willHealOnRetry, willHealViaReparse
public QueryExecutorImpl(PGStream pgStream, String user, String database, int cancelSignalTimeout, Properties info) throws SQLException, IOException
SQLException
IOException
public int getProtocolVersion()
public Query createSimpleQuery(String sql) throws SQLException
QueryExecutor
Query.createParameterList()
of the returned object will always return an empty
ParameterList.sql
- the SQL for the query to createSQLException
- if something goes wrongpublic Query wrap(List<NativeQuery> queries)
QueryExecutor
queries
- list of queries in native to database syntaxpublic void execute(Query query, @Nullable ParameterList parameters, ResultHandler handler, int maxRows, int fetchSize, int flags) throws SQLException
QueryExecutor
query
- the query to execute; must be a query returned from calling
QueryExecutor.wrap(List)
on this QueryExecutor object.parameters
- the parameters for the query. Must be non-null
if the query
takes parameters. Must be a parameter object returned by
Query.createParameterList()
.handler
- a ResultHandler responsible for handling results generated by this querymaxRows
- the maximum number of rows to retrievefetchSize
- if QUERY_FORWARD_CURSOR is set, the preferred number of rows to retrieve
before suspendingflags
- a combination of QUERY_* flags indicating how to handle the query.SQLException
- if query execution failspublic void execute(Query query, @Nullable ParameterList parameters, ResultHandler handler, int maxRows, int fetchSize, int flags, boolean adaptiveFetch) throws SQLException
QueryExecutor
query
- the query to execute; must be a query returned from calling
QueryExecutor.wrap(List)
on this QueryExecutor object.parameters
- the parameters for the query. Must be non-null
if the query
takes parameters. Must be a parameter object returned by
Query.createParameterList()
.handler
- a ResultHandler responsible for handling results generated by this querymaxRows
- the maximum number of rows to retrievefetchSize
- if QUERY_FORWARD_CURSOR is set, the preferred number of rows to retrieve
before suspendingflags
- a combination of QUERY_* flags indicating how to handle the query.adaptiveFetch
- state of adaptiveFetch to use during executionSQLException
- if query execution failspublic void execute(Query[] queries, @Nullable ParameterList[] parameterLists, BatchResultHandler batchHandler, int maxRows, int fetchSize, int flags) throws SQLException
QueryExecutor
queries
- the queries to execute; each must be a query returned from calling
QueryExecutor.wrap(List)
on this QueryExecutor object.parameterLists
- the parameter lists for the queries. The parameter lists correspond 1:1
to the queries passed in the queries
array. Each must be non-
null
if the corresponding query takes parameters, and must be a parameter
object returned by Query.createParameterList()
created by
the corresponding query.batchHandler
- a ResultHandler responsible for handling results generated by this querymaxRows
- the maximum number of rows to retrievefetchSize
- if QUERY_FORWARD_CURSOR is set, the preferred number of rows to retrieve
before suspendingflags
- a combination of QUERY_* flags indicating how to handle the query.SQLException
- if query execution failspublic void execute(Query[] queries, @Nullable ParameterList[] parameterLists, BatchResultHandler batchHandler, int maxRows, int fetchSize, int flags, boolean adaptiveFetch) throws SQLException
QueryExecutor
queries
- the queries to execute; each must be a query returned from calling
QueryExecutor.wrap(List)
on this QueryExecutor object.parameterLists
- the parameter lists for the queries. The parameter lists correspond 1:1
to the queries passed in the queries
array. Each must be non-
null
if the corresponding query takes parameters, and must be a parameter
object returned by Query.createParameterList()
created by
the corresponding query.batchHandler
- a ResultHandler responsible for handling results generated by this querymaxRows
- the maximum number of rows to retrievefetchSize
- if QUERY_FORWARD_CURSOR is set, the preferred number of rows to retrieve
before suspendingflags
- a combination of QUERY_* flags indicating how to handle the query.adaptiveFetch
- state of adaptiveFetch to use during executionSQLException
- if query execution failspublic byte[] fastpathCall(int fnid, ParameterList parameters, boolean suppressBegin) throws SQLException
QueryExecutor
fnid
- the OID of the backend function to invokeparameters
- a ParameterList returned from QueryExecutor.createFastpathParameters(int)
containing the
parameters to pass to the backend functionsuppressBegin
- if begin should be suppressednull
if a void result
was returnedSQLException
- if an error occurs while executing the fastpath callpublic void doSubprotocolBegin() throws SQLException
SQLException
public ParameterList createFastpathParameters(int count)
QueryExecutor
QueryExecutor.fastpathCall(int, org.postgresql.core.ParameterList, boolean)
.count
- the number of parameters the fastpath call will takeQueryExecutor.fastpathCall(int, org.postgresql.core.ParameterList, boolean)
.public void processNotifies() throws SQLException
QueryExecutor
SQLException
- if and error occurs while fetching notificationspublic void processNotifies(int timeoutMillis) throws SQLException
QueryExecutor
timeoutMillis
- when > 0, block for this time
when =0, block forever
when < 0, don't blockSQLException
- if and error occurs while fetching notificationspublic CopyOperation startCopy(String sql, boolean suppressBegin) throws SQLException
sql
- COPY FROM STDIN / COPY TO STDOUT statementsuppressBegin
- if begin should be suppressedSQLException
- on failurepublic void cancelCopy(CopyOperationImpl op) throws SQLException
op
- the copy operation presumably currently holding lock on this connectionSQLException
- on any additional failurepublic long endCopy(CopyOperationImpl op) throws SQLException
op
- the copy operation presumably currently holding lock on this connectionSQLException
- on failurepublic void writeToCopy(CopyOperationImpl op, byte[] data, int off, int siz) throws SQLException
op
- the CopyIn operation presumably currently holding lock on this connectiondata
- bytes to sendoff
- index of first byte to send (usually 0)siz
- number of bytes to send (usually data.length)SQLException
- on failurepublic void writeToCopy(CopyOperationImpl op, ByteStreamWriter from) throws SQLException
op
- the CopyIn operation presumably currently holding lock on this connectionfrom
- the source of bytes, e.g. a ByteBufferByteStreamWriterSQLException
- on failurepublic void flushCopy(CopyOperationImpl op) throws SQLException
SQLException
protected void processResults(ResultHandler handler, int flags) throws IOException
IOException
protected void processResults(ResultHandler handler, int flags, boolean adaptiveFetch) throws IOException
IOException
public void fetch(ResultCursor cursor, ResultHandler handler, int fetchSize, boolean adaptiveFetch) throws SQLException
QueryExecutor
cursor
- the cursor to fetch fromhandler
- the handler to feed results tofetchSize
- the preferred number of rows to retrieve before suspendingadaptiveFetch
- state of adaptiveFetch to use during fetchingSQLException
- if query execution failspublic int getAdaptiveFetchSize(boolean adaptiveFetch, ResultCursor cursor)
QueryExecutor
adaptiveFetch
- state of adaptive fetch, which should be used during retrievingcursor
- Cursor used by resultSet, containing query, have to be able to cast to
Portal class.public void setAdaptiveFetch(boolean adaptiveFetch)
QueryExecutor
adaptiveFetch
- desired state of adaptive fetchpublic boolean getAdaptiveFetch()
QueryExecutor
public void addQueryToAdaptiveFetchCache(boolean adaptiveFetch, @NonNull ResultCursor cursor)
QueryExecutor
adaptiveFetch
- state of adaptive fetch used during adding querycursor
- Cursor used by resultSet, containing query, have to be able to cast to
Portal class.public void removeQueryFromAdaptiveFetchCache(boolean adaptiveFetch, @NonNull ResultCursor cursor)
QueryExecutor
adaptiveFetch
- state of adaptive fetch used during removing querycursor
- Cursor used by resultSet, containing query, have to be able to cast to
Portal class.protected void sendCloseMessage() throws IOException
sendCloseMessage
in class QueryExecutorBase
IOException
public void readStartupMessages() throws IOException, SQLException
IOException
SQLException
public void receiveParameterStatus() throws IOException, SQLException
IOException
SQLException
public void setTimeZone(TimeZone timeZone)
public @Nullable TimeZone getTimeZone()
QueryExecutor
public void setApplicationName(String applicationName)
public String getApplicationName()
QueryExecutor
public ReplicationProtocol getReplicationProtocol()
public boolean useBinaryForReceive(int oid)
TypeTransferModeRegistry
oid
- type oidpublic void setBinaryReceiveOids(Set<Integer> oids)
QueryExecutor
oids
- The oids to request with binary encoding.public boolean useBinaryForSend(int oid)
TypeTransferModeRegistry
oid
- type oidpublic void setBinarySendOids(Set<Integer> oids)
QueryExecutor
oids
- The oids to send with binary encoding.public boolean getIntegerDateTimes()
QueryExecutor
Copyright © 1997-2020 PostgreSQL Global Development Group. All Rights Reserved.