パッケージ org.postgresql.core.v3
クラス QueryExecutorImpl
java.lang.Object
org.postgresql.core.QueryExecutorBase
org.postgresql.core.v3.QueryExecutorImpl
- すべての実装されたインタフェース:
QueryExecutor
,TypeTransferModeRegistry
QueryExecutor implementation for the V3 protocol.
-
フィールドの概要
クラスから継承されたフィールド org.postgresql.core.QueryExecutorBase
closeAction, lock, lockCondition, logServerErrorDetail, pgStream
インタフェースから継承されたフィールド org.postgresql.core.QueryExecutor
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
-
コンストラクタの概要
コンストラクタ -
メソッドの概要
修飾子とタイプメソッド説明void
addBinaryReceiveOid
(int oid) Adds a single oid that should be received using binary encoding.void
addBinarySendOid
(int oid) Adds a single oid that should be sent using binary encoding.void
addQueryToAdaptiveFetchCache
(boolean adaptiveFetch, ResultCursor cursor) Add query to adaptive fetch cache inside QueryExecutor.void
Finishes a copy operation and unlocks connection discarding any exchanged data.createFastpathParameters
(int count) Create a new ParameterList implementation suitable for invoking a fastpath function viaQueryExecutor.fastpathCall(int, org.postgresql.core.ParameterList, boolean)
.createSimpleQuery
(String sql) Create an unparameterized Query object suitable for execution by this QueryExecutor.void
long
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 @Nullable []
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
boolean
Get state of adaptive fetch inside QueryExecutor.int
getAdaptiveFetchSize
(boolean adaptiveFetch, ResultCursor cursor) Get fetch size computed by adaptive fetch size for given query.Returns application_name connection property.Gets the oids that should be received using binary encoding.Gets the oids that should be sent using binary encoding.boolean
Returns true if server uses integer instead of double for binary date and time encodings.int
@Nullable TimeZone
Returns backend timezone in java format.void
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
void
void
removeBinaryReceiveOid
(int oid) Remove given oid from the list of oids for binary receive encoding.void
removeBinarySendOid
(int oid) Remove given oid from the list of oids for binary send encoding.void
removeQueryFromAdaptiveFetchCache
(boolean adaptiveFetch, ResultCursor cursor) Remove query from adaptive fetch cache inside QueryExecutorprotected void
Sends "terminate connection" message to the backend.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) 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.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.クラスから継承されたメソッド org.postgresql.core.QueryExecutorBase
abort, addNotification, addWarning, borrowCallableQuery, borrowQuery, borrowQueryByKey, borrowReturningQuery, close, createCloseAction, createQuery, createQueryByKey, createQueryKey, getAutoSave, getBackendPID, getCloseAction, 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, setPreferQueryMode, setServerVersion, setServerVersionNum, setStandardConformingStrings, setTransactionState, willHealOnRetry, willHealViaReparse
-
コンストラクタの詳細
-
QueryExecutorImpl
public QueryExecutorImpl(PGStream pgStream, int cancelSignalTimeout, Properties info) throws SQLException, IOException
-
-
メソッドの詳細
-
getProtocolVersion
public int getProtocolVersion()- 戻り値:
- the version of the implementation
-
createSimpleQuery
インタフェースからコピーされた説明:QueryExecutor
Create an unparameterized Query object suitable for execution by this QueryExecutor. The provided query string is not parsed for parameter placeholders ('?' characters), and theQuery.createParameterList()
of the returned object will always return an empty ParameterList.- パラメータ:
sql
- the SQL for the query to create- 戻り値:
- a new Query object
- 例外:
SQLException
- if something goes wrong
-
wrap
インタフェースからコピーされた説明:QueryExecutor
Wrap given native query into a ready for execution format.- パラメータ:
queries
- list of queries in native to database syntax- 戻り値:
- query object ready for execution by this query executor
-
execute
public void execute(Query query, @Nullable ParameterList parameters, ResultHandler handler, int maxRows, int fetchSize, int flags) throws SQLException インタフェースからコピーされた説明:QueryExecutor
Execute a Query, passing results to a provided ResultHandler.- パラメータ:
query
- the query to execute; must be a query returned from callingQueryExecutor.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 byQuery.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 fails
-
execute
public void execute(Query query, @Nullable ParameterList parameters, ResultHandler handler, int maxRows, int fetchSize, int flags, boolean adaptiveFetch) throws SQLException インタフェースからコピーされた説明:QueryExecutor
Execute a Query with adaptive fetch, passing results to a provided ResultHandler.- パラメータ:
query
- the query to execute; must be a query returned from callingQueryExecutor.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 byQuery.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 execution- 例外:
SQLException
- if query execution fails
-
execute
public void execute(Query[] queries, @Nullable ParameterList[] parameterLists, BatchResultHandler batchHandler, int maxRows, int fetchSize, int flags) throws SQLException インタフェースからコピーされた説明:QueryExecutor
Execute several Query, passing results to a provided ResultHandler.- パラメータ:
queries
- the queries to execute; each must be a query returned from callingQueryExecutor.wrap(List)
on this QueryExecutor object.parameterLists
- the parameter lists for the queries. The parameter lists correspond 1:1 to the queries passed in thequeries
array. Each must be non-null
if the corresponding query takes parameters, and must be a parameter object returned byQuery.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 fails
-
execute
public void execute(Query[] queries, @Nullable ParameterList[] parameterLists, BatchResultHandler batchHandler, int maxRows, int fetchSize, int flags, boolean adaptiveFetch) throws SQLException インタフェースからコピーされた説明:QueryExecutor
Execute several Query with adaptive fetch, passing results to a provided ResultHandler.- パラメータ:
queries
- the queries to execute; each must be a query returned from callingQueryExecutor.wrap(List)
on this QueryExecutor object.parameterLists
- the parameter lists for the queries. The parameter lists correspond 1:1 to the queries passed in thequeries
array. Each must be non-null
if the corresponding query takes parameters, and must be a parameter object returned byQuery.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 execution- 例外:
SQLException
- if query execution fails
-
fastpathCall
public byte @Nullable [] fastpathCall(int fnid, ParameterList parameters, boolean suppressBegin) throws SQLException インタフェースからコピーされた説明:QueryExecutor
Invoke a backend function via the fastpath interface.- パラメータ:
fnid
- the OID of the backend function to invokeparameters
- a ParameterList returned fromQueryExecutor.createFastpathParameters(int)
containing the parameters to pass to the backend functionsuppressBegin
- if begin should be suppressed- 戻り値:
- the binary-format result of the fastpath call, or
null
if a void result was returned - 例外:
SQLException
- if an error occurs while executing the fastpath call
-
doSubprotocolBegin
- 例外:
SQLException
-
createFastpathParameters
インタフェースからコピーされた説明:QueryExecutor
Create a new ParameterList implementation suitable for invoking a fastpath function viaQueryExecutor.fastpathCall(int, org.postgresql.core.ParameterList, boolean)
.- パラメータ:
count
- the number of parameters the fastpath call will take- 戻り値:
- a ParameterList suitable for passing to
QueryExecutor.fastpathCall(int, org.postgresql.core.ParameterList, boolean)
.
-
processNotifies
インタフェースからコピーされた説明:QueryExecutor
Prior to attempting to retrieve notifications, we need to pull any recently received notifications off of the network buffers. The notification retrieval in ProtocolConnection cannot do this as it is prone to deadlock, so the higher level caller must be responsible which requires exposing this method.- 例外:
SQLException
- if and error occurs while fetching notifications
-
processNotifies
インタフェースからコピーされた説明:QueryExecutor
Prior to attempting to retrieve notifications, we need to pull any recently received notifications off of the network buffers. The notification retrieval in ProtocolConnection cannot do this as it is prone to deadlock, so the higher level caller must be responsible which requires exposing this method. This variant supports blocking for the given time in millis.- パラメータ:
timeoutMillis
- when > 0, block for this time when =0, block forever when < 0, don't block- 例外:
SQLException
- if and error occurs while fetching notifications
-
startCopy
Sends given query to BE to start, initialize and lock connection for a CopyOperation.- パラメータ:
sql
- COPY FROM STDIN / COPY TO STDOUT statementsuppressBegin
- if begin should be suppressed- 戻り値:
- CopyIn or CopyOut operation object
- 例外:
SQLException
- on failure
-
cancelCopy
Finishes a copy operation and unlocks connection discarding any exchanged data.- パラメータ:
op
- the copy operation presumably currently holding lock on this connection- 例外:
SQLException
- on any additional failure
-
endCopy
Finishes writing to copy and unlocks connection.- パラメータ:
op
- the copy operation presumably currently holding lock on this connection- 戻り値:
- number of rows updated for server versions 8.2 or newer
- 例外:
SQLException
- on failure
-
writeToCopy
Sends data during a live COPY IN operation. Only unlocks the connection if server suddenly returns CommandComplete, which should not happen- パラメータ:
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 failure
-
writeToCopy
Sends data during a live COPY IN operation. Only unlocks the connection if server suddenly returns CommandComplete, which should not happen- パラメータ:
op
- the CopyIn operation presumably currently holding lock on this connectionfrom
- the source of bytes, e.g. a ByteBufferByteStreamWriter- 例外:
SQLException
- on failure
-
flushCopy
- 例外:
SQLException
-
processResults
- 例外:
IOException
-
processResults
protected void processResults(ResultHandler handler, int flags, boolean adaptiveFetch) throws IOException - 例外:
IOException
-
fetch
public void fetch(ResultCursor cursor, ResultHandler handler, int fetchSize, boolean adaptiveFetch) throws SQLException インタフェースからコピーされた説明:QueryExecutor
Fetch additional rows from a cursor.- パラメータ:
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 fetching- 例外:
SQLException
- if query execution fails
-
getAdaptiveFetchSize
インタフェースからコピーされた説明:QueryExecutor
Get fetch size computed by adaptive fetch size for given query.- パラメータ:
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.- 戻り値:
- fetch size computed by adaptive fetch size for given query passed inside cursor
-
setAdaptiveFetch
public void setAdaptiveFetch(boolean adaptiveFetch) インタフェースからコピーされた説明:QueryExecutor
Set state of adaptive fetch inside QueryExecutor.- パラメータ:
adaptiveFetch
- desired state of adaptive fetch
-
getAdaptiveFetch
public boolean getAdaptiveFetch()インタフェースからコピーされた説明:QueryExecutor
Get state of adaptive fetch inside QueryExecutor.- 戻り値:
- state of adaptive fetch inside QueryExecutor
-
addQueryToAdaptiveFetchCache
インタフェースからコピーされた説明:QueryExecutor
Add query to adaptive fetch cache inside 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.
-
removeQueryFromAdaptiveFetchCache
インタフェースからコピーされた説明:QueryExecutor
Remove query from adaptive fetch cache inside 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.
-
sendCloseMessage
クラスからコピーされた説明:QueryExecutorBase
Sends "terminate connection" message to the backend.- 定義:
sendCloseMessage
クラス内QueryExecutorBase
- 例外:
IOException
- in case connection termination fails
-
readStartupMessages
-
receiveParameterStatus
-
setTimeZone
-
getTimeZone
インタフェースからコピーされた説明:QueryExecutor
Returns backend timezone in java format.- 戻り値:
- backend timezone in java format.
-
setApplicationName
-
getApplicationName
インタフェースからコピーされた説明:QueryExecutor
Returns application_name connection property.- 戻り値:
- application_name connection property
-
getReplicationProtocol
- 戻り値:
- the ReplicationProtocol instance for this connection.
-
addBinaryReceiveOid
public void addBinaryReceiveOid(int oid) インタフェースからコピーされた説明:QueryExecutor
Adds a single oid that should be received using binary encoding.- パラメータ:
oid
- The oid to request with binary encoding.
-
removeBinaryReceiveOid
public void removeBinaryReceiveOid(int oid) インタフェースからコピーされた説明:QueryExecutor
Remove given oid from the list of oids for binary receive encoding.Note: the binary receive for the oid can be re-activated later.
- パラメータ:
oid
- The oid to request with binary encoding.
-
getBinaryReceiveOids
インタフェースからコピーされた説明:QueryExecutor
Gets the oids that should be received using binary encoding.Note: this returns an unmodifiable set, and its contents might not reflect the current state.
- 戻り値:
- The oids to request with binary encoding.
-
useBinaryForReceive
public boolean useBinaryForReceive(int oid) インタフェースからコピーされた説明:TypeTransferModeRegistry
Returns if given oid should be received in binary format.- パラメータ:
oid
- type oid- 戻り値:
- true if given oid should be received in binary format
-
setBinaryReceiveOids
インタフェースからコピーされた説明:QueryExecutor
Sets the oids that should be received using binary encoding.- パラメータ:
oids
- The oids to request with binary encoding.
-
addBinarySendOid
public void addBinarySendOid(int oid) インタフェースからコピーされた説明:QueryExecutor
Adds a single oid that should be sent using binary encoding.- パラメータ:
oid
- The oid to send with binary encoding.
-
removeBinarySendOid
public void removeBinarySendOid(int oid) インタフェースからコピーされた説明:QueryExecutor
Remove given oid from the list of oids for binary send encoding.Note: the binary send for the oid can be re-activated later.
- パラメータ:
oid
- The oid to send with binary encoding.
-
getBinarySendOids
インタフェースからコピーされた説明:QueryExecutor
Gets the oids that should be sent using binary encoding.Note: this returns an unmodifiable set, and its contents might not reflect the current state.
- 戻り値:
- useBinaryForOids The oids to send with binary encoding.
-
useBinaryForSend
public boolean useBinaryForSend(int oid) インタフェースからコピーされた説明:TypeTransferModeRegistry
Returns if given oid should be sent in binary format.- パラメータ:
oid
- type oid- 戻り値:
- true if given oid should be sent in binary format
-
setBinarySendOids
インタフェースからコピーされた説明:QueryExecutor
Sets the oids that should be sent using binary encoding.- パラメータ:
oids
- The oids to send with binary encoding.
-
getIntegerDateTimes
public boolean getIntegerDateTimes()インタフェースからコピーされた説明:QueryExecutor
Returns true if server uses integer instead of double for binary date and time encodings.- 戻り値:
- the server integer_datetime setting.
-