public class QueryExecutorImpl extends QueryExecutorBase
Modifier and Type | Field and Description |
---|---|
private boolean |
allowEncodingChanges |
private java.lang.String |
applicationName
application_name connection property.
|
private SimpleQuery |
autoSaveQuery |
private SimpleQuery |
beginReadOnlyTransactionQuery |
private SimpleQuery |
beginTransactionQuery |
private boolean |
cleanupSavePoints |
private CommandCompleteParser |
commandCompleteParser
CommandComplete(B) messages are quite common, so we reuse instance to parse those |
private short |
deallocateEpoch |
private SimpleQuery |
emptyQuery |
private int |
estimatedReceiveBufferBytes
The estimated server response size since we last consumed the input stream from the server, in
bytes.
|
private boolean |
integerDateTimes
True if server uses integers for date and time fields.
|
private java.lang.String |
lastSetSearchPathQuery
This caches the latest observed
set search_path query so the reset of prepared
statement cache can be skipped if using repeated calls for the same set search_path
value. |
private java.lang.Object |
lockedFor
Supplement to synchronization of public methods on current QueryExecutor.
|
private static java.util.logging.Logger |
LOGGER |
private static int |
MAX_BUFFERED_RECV_BYTES |
private long |
nextUniqueID |
private static int |
NODATA_QUERY_RESPONSE_SIZE_BYTES |
private java.lang.ref.ReferenceQueue<Portal> |
openPortalCleanupQueue |
private java.util.HashMap<java.lang.ref.PhantomReference<Portal>,java.lang.String> |
openPortalMap |
private java.lang.ref.ReferenceQueue<SimpleQuery> |
parsedQueryCleanupQueue |
private java.util.HashMap<java.lang.ref.PhantomReference<SimpleQuery>,java.lang.String> |
parsedQueryMap |
private java.util.Deque<Portal> |
pendingBindQueue |
private java.util.Deque<SimpleQuery> |
pendingDescribePortalQueue |
private java.util.Deque<DescribeRequest> |
pendingDescribeStatementQueue |
private java.util.Deque<ExecuteRequest> |
pendingExecuteQueue |
private java.util.Deque<SimpleQuery> |
pendingParseQueue |
(package private) java.util.concurrent.atomic.AtomicBoolean |
processingCopyResults |
private SimpleQuery |
releaseAutoSave |
private ReplicationProtocol |
replicationProtocol |
private SimpleQuery |
restoreToAutoSave |
private SimpleQuery |
sync
This is a fake query object so processResults can distinguish "ReadyForQuery" messages
from Sync messages vs from simple execute (aka 'Q').
|
private java.util.TimeZone |
timeZone
TimeZone of the current connection (TimeZone backend parameter).
|
private java.sql.SQLException |
transactionFailCause
The exception that caused the last transaction to fail.
|
private static Portal |
UNNAMED_PORTAL |
private java.util.Set<java.lang.Integer> |
useBinaryReceiveForOids
Bit set that has a bit set for each oid which should be received using binary format.
|
private java.util.Set<java.lang.Integer> |
useBinarySendForOids
Bit set that has a bit set for each oid which should be sent using binary format.
|
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,
java.lang.String user,
java.lang.String database,
int cancelSignalTimeout,
java.util.Properties info) |
Modifier and Type | Method and Description |
---|---|
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(java.lang.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,
ParameterList[] parameterLists,
BatchResultHandler batchHandler,
int maxRows,
int fetchSize,
int flags)
Execute several Query, passing results to a provided ResultHandler.
|
void |
execute(Query query,
ParameterList parameters,
ResultHandler handler,
int maxRows,
int fetchSize,
int flags)
Execute a Query, 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)
Fetch additional rows from a cursor.
|
void |
flushCopy(CopyOperationImpl op) |
private void |
flushIfDeadlockRisk(Query query,
boolean disallowBatching,
ResultHandler resultHandler,
BatchResultHandler batchHandler,
int flags) |
java.lang.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() |
java.util.TimeZone |
getTimeZone()
Returns backend timezone in java format.
|
(package private) boolean |
hasLock(java.lang.Object holder) |
private void |
initCopy(CopyOperationImpl op)
Locks connection and calls initializer for a new CopyOperation Called via startCopy ->
processCopyResults.
|
private void |
interpretCommandStatus(java.lang.String status,
ResultHandler handler) |
private void |
lock(java.lang.Object obtainer)
Obtain lock over this connection for given object, blocking to wait if necessary.
|
(package private) CopyOperationImpl |
processCopyResults(CopyOperationImpl op,
boolean block)
Handles copy sub protocol responses from server.
|
private void |
processDeadParsedQueries() |
private void |
processDeadPortals() |
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) |
(package private) void |
readFromCopy(CopyOperationImpl op,
boolean block)
Wait for a row of data to be received from server on an active copy operation
Connection gets unlocked by processCopyResults() at end of operation.
|
void |
readStartupMessages() |
private void |
receiveAsyncNotify() |
private java.lang.String |
receiveCommandStatus() |
private java.sql.SQLException |
receiveErrorResponse() |
private byte[] |
receiveFastpathResult() |
private Field[] |
receiveFields() |
private java.sql.SQLWarning |
receiveNoticeResponse() |
void |
receiveParameterStatus() |
private void |
receiveRFQ() |
private void |
registerOpenPortal(Portal portal) |
private void |
registerParsedQuery(SimpleQuery query,
java.lang.String statementName) |
private void |
releaseSavePoint(boolean autosave,
int flags) |
private void |
rollbackIfRequired(boolean autosave,
java.sql.SQLException e) |
private boolean |
sendAutomaticSavepoint(Query query,
int flags) |
private void |
sendBind(SimpleQuery query,
SimpleParameterList params,
Portal portal,
boolean noBinaryTransfer) |
protected void |
sendCloseMessage() |
private void |
sendClosePortal(java.lang.String portalName) |
private void |
sendCloseStatement(java.lang.String statementName) |
private void |
sendDescribePortal(SimpleQuery query,
Portal portal) |
private void |
sendDescribeStatement(SimpleQuery query,
SimpleParameterList params,
boolean describeOnly) |
private void |
sendExecute(SimpleQuery query,
Portal portal,
int limit) |
private void |
sendFastpathCall(int fnid,
SimpleParameterList params) |
private void |
sendOneQuery(SimpleQuery query,
SimpleParameterList params,
int maxRows,
int fetchSize,
int flags) |
private void |
sendParse(SimpleQuery query,
SimpleParameterList params,
boolean oneShot) |
private void |
sendQuery(Query query,
V3ParameterList parameters,
int maxRows,
int fetchSize,
int flags,
ResultHandler resultHandler,
BatchResultHandler batchHandler) |
private ResultHandler |
sendQueryPreamble(ResultHandler delegateHandler,
int flags) |
private void |
sendSimpleQuery(SimpleQuery query,
SimpleParameterList params) |
private void |
sendSync() |
void |
setApplicationName(java.lang.String applicationName) |
void |
setBinaryReceiveOids(java.util.Set<java.lang.Integer> oids)
Sets the oids that should be received using binary encoding.
|
void |
setBinarySendOids(java.util.Set<java.lang.Integer> oids)
Sets the oids that should be sent using binary encoding.
|
private void |
setIntegerDateTimes(boolean state) |
private void |
setSocketTimeout(int millis) |
void |
setTimeZone(java.util.TimeZone timeZone) |
private void |
skipMessage()
Ignore the response message by reading the message length and skipping over those bytes in the
communication stream.
|
CopyOperation |
startCopy(java.lang.String sql,
boolean suppressBegin)
Sends given query to BE to start, initialize and lock connection for a CopyOperation.
|
private void |
unlock(java.lang.Object holder)
Release lock on this connection presumably held by given object.
|
private int |
updateQueryMode(int flags) |
private boolean |
useBinary(Field field)
Returns true if the specified field should be retrieved using binary encoding.
|
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.
|
private void |
waitOnLock()
Wait until our lock is released.
|
Query |
wrap(java.util.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, 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
private static final java.util.logging.Logger LOGGER
private java.util.TimeZone timeZone
private java.lang.String applicationName
private boolean integerDateTimes
private final java.util.Set<java.lang.Integer> useBinaryReceiveForOids
private final java.util.Set<java.lang.Integer> useBinarySendForOids
private final SimpleQuery sync
private short deallocateEpoch
private java.lang.String lastSetSearchPathQuery
set search_path
query so the reset of prepared
statement cache can be skipped if using repeated calls for the same set search_path
value.private java.sql.SQLException transactionFailCause
private final ReplicationProtocol replicationProtocol
private final CommandCompleteParser commandCompleteParser
CommandComplete(B)
messages are quite common, so we reuse instance to parse thoseprivate java.lang.Object lockedFor
Supplement to synchronization of public methods on current QueryExecutor.
Necessary for keeping the connection intact between calls to public methods sharing a state such as COPY subprotocol. waitOnLock() must be called at beginning of each connection access point.
Public methods sharing that state must then be synchronized among themselves. Normal method synchronization typically suffices for that.
See notes on related methods as well as currentCopy() below.
private static final int MAX_BUFFERED_RECV_BYTES
private static final int NODATA_QUERY_RESPONSE_SIZE_BYTES
java.util.concurrent.atomic.AtomicBoolean processingCopyResults
private final java.util.HashMap<java.lang.ref.PhantomReference<SimpleQuery>,java.lang.String> parsedQueryMap
private final java.lang.ref.ReferenceQueue<SimpleQuery> parsedQueryCleanupQueue
private final java.util.HashMap<java.lang.ref.PhantomReference<Portal>,java.lang.String> openPortalMap
private final java.lang.ref.ReferenceQueue<Portal> openPortalCleanupQueue
private static final Portal UNNAMED_PORTAL
private final java.util.Deque<SimpleQuery> pendingParseQueue
private final java.util.Deque<Portal> pendingBindQueue
private final java.util.Deque<ExecuteRequest> pendingExecuteQueue
private final java.util.Deque<DescribeRequest> pendingDescribeStatementQueue
private final java.util.Deque<SimpleQuery> pendingDescribePortalQueue
private long nextUniqueID
private final boolean allowEncodingChanges
private final boolean cleanupSavePoints
private int estimatedReceiveBufferBytes
The estimated server response size since we last consumed the input stream from the server, in bytes.
Starts at zero, reset by every Sync message. Mainly used for batches.
Used to avoid deadlocks, see MAX_BUFFERED_RECV_BYTES.
private final SimpleQuery beginTransactionQuery
private final SimpleQuery beginReadOnlyTransactionQuery
private final SimpleQuery emptyQuery
private final SimpleQuery autoSaveQuery
private final SimpleQuery releaseAutoSave
private final SimpleQuery restoreToAutoSave
public QueryExecutorImpl(PGStream pgStream, java.lang.String user, java.lang.String database, int cancelSignalTimeout, java.util.Properties info) throws java.sql.SQLException, java.io.IOException
java.sql.SQLException
java.io.IOException
public int getProtocolVersion()
private void lock(java.lang.Object obtainer) throws PSQLException
obtainer
- object that gets the lock. Normally current thread.PSQLException
- when already holding the lock or getting interrupted.private void unlock(java.lang.Object holder) throws PSQLException
holder
- object that holds the lock. Normally current thread.PSQLException
- when this thread does not hold the lockprivate void waitOnLock() throws PSQLException
PSQLException
boolean hasLock(java.lang.Object holder)
holder
- object assumed to hold the lockpublic Query createSimpleQuery(java.lang.String sql) throws java.sql.SQLException
QueryExecutor
Query.createParameterList()
of the returned object will always return an empty
ParameterList.sql
- the SQL for the query to createjava.sql.SQLException
- if something goes wrongpublic Query wrap(java.util.List<NativeQuery> queries)
QueryExecutor
queries
- list of queries in native to database syntaxprivate int updateQueryMode(int flags)
public void execute(Query query, ParameterList parameters, ResultHandler handler, int maxRows, int fetchSize, int flags) throws java.sql.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.java.sql.SQLException
- if query execution failsprivate boolean sendAutomaticSavepoint(Query query, int flags) throws java.io.IOException
java.io.IOException
private void releaseSavePoint(boolean autosave, int flags) throws java.sql.SQLException
java.sql.SQLException
private void rollbackIfRequired(boolean autosave, java.sql.SQLException e) throws java.sql.SQLException
java.sql.SQLException
public void execute(Query[] queries, ParameterList[] parameterLists, BatchResultHandler batchHandler, int maxRows, int fetchSize, int flags) throws java.sql.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.java.sql.SQLException
- if query execution failsprivate ResultHandler sendQueryPreamble(ResultHandler delegateHandler, int flags) throws java.io.IOException
java.io.IOException
public byte[] fastpathCall(int fnid, ParameterList parameters, boolean suppressBegin) throws java.sql.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 returnedjava.sql.SQLException
- if an error occurs while executing the fastpath callpublic void doSubprotocolBegin() throws java.sql.SQLException
java.sql.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)
.private void sendFastpathCall(int fnid, SimpleParameterList params) throws java.sql.SQLException, java.io.IOException
java.sql.SQLException
java.io.IOException
public void processNotifies() throws java.sql.SQLException
QueryExecutor
java.sql.SQLException
- if and error occurs while fetching notificationspublic void processNotifies(int timeoutMillis) throws java.sql.SQLException
QueryExecutor
timeoutMillis
- when > 0, block for this time
when =0, block forever
when < 0, don't blockjava.sql.SQLException
- if and error occurs while fetching notificationsprivate void setSocketTimeout(int millis) throws PSQLException
PSQLException
private byte[] receiveFastpathResult() throws java.io.IOException, java.sql.SQLException
java.io.IOException
java.sql.SQLException
public CopyOperation startCopy(java.lang.String sql, boolean suppressBegin) throws java.sql.SQLException
sql
- COPY FROM STDIN / COPY TO STDOUT statementsuppressBegin
- if begin should be suppressedjava.sql.SQLException
- on failureprivate void initCopy(CopyOperationImpl op) throws java.sql.SQLException, java.io.IOException
op
- an uninitialized CopyOperationjava.sql.SQLException
- on locking failurejava.io.IOException
- on database connection failurepublic void cancelCopy(CopyOperationImpl op) throws java.sql.SQLException
op
- the copy operation presumably currently holding lock on this connectionjava.sql.SQLException
- on any additional failurepublic long endCopy(CopyOperationImpl op) throws java.sql.SQLException
op
- the copy operation presumably currently holding lock on this connectionjava.sql.SQLException
- on failurepublic void writeToCopy(CopyOperationImpl op, byte[] data, int off, int siz) throws java.sql.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)java.sql.SQLException
- on failurepublic void writeToCopy(CopyOperationImpl op, ByteStreamWriter from) throws java.sql.SQLException
op
- the CopyIn operation presumably currently holding lock on this connectionfrom
- the source of bytes, e.g. a ByteBufferByteStreamWriterjava.sql.SQLException
- on failurepublic void flushCopy(CopyOperationImpl op) throws java.sql.SQLException
java.sql.SQLException
void readFromCopy(CopyOperationImpl op, boolean block) throws java.sql.SQLException
op
- the copy operation presumably currently holding lock on this connectionblock
- whether to block waiting for inputjava.sql.SQLException
- on any failureCopyOperationImpl processCopyResults(CopyOperationImpl op, boolean block) throws java.sql.SQLException, java.io.IOException
block
- whether to block waiting for inputjava.sql.SQLException
- in case of misusejava.io.IOException
- from the underlying connectionprivate void flushIfDeadlockRisk(Query query, boolean disallowBatching, ResultHandler resultHandler, BatchResultHandler batchHandler, int flags) throws java.io.IOException
java.io.IOException
private void sendQuery(Query query, V3ParameterList parameters, int maxRows, int fetchSize, int flags, ResultHandler resultHandler, BatchResultHandler batchHandler) throws java.io.IOException, java.sql.SQLException
java.io.IOException
java.sql.SQLException
private void sendSync() throws java.io.IOException
java.io.IOException
private void sendParse(SimpleQuery query, SimpleParameterList params, boolean oneShot) throws java.io.IOException
java.io.IOException
private void sendBind(SimpleQuery query, SimpleParameterList params, Portal portal, boolean noBinaryTransfer) throws java.io.IOException
java.io.IOException
private boolean useBinary(Field field)
field
- The field whose Oid type to analyse.Field.BINARY_FORMAT
should be used, false if
Field.BINARY_FORMAT
.private void sendDescribePortal(SimpleQuery query, Portal portal) throws java.io.IOException
java.io.IOException
private void sendDescribeStatement(SimpleQuery query, SimpleParameterList params, boolean describeOnly) throws java.io.IOException
java.io.IOException
private void sendExecute(SimpleQuery query, Portal portal, int limit) throws java.io.IOException
java.io.IOException
private void sendClosePortal(java.lang.String portalName) throws java.io.IOException
java.io.IOException
private void sendCloseStatement(java.lang.String statementName) throws java.io.IOException
java.io.IOException
private void sendOneQuery(SimpleQuery query, SimpleParameterList params, int maxRows, int fetchSize, int flags) throws java.io.IOException
java.io.IOException
private void sendSimpleQuery(SimpleQuery query, SimpleParameterList params) throws java.io.IOException
java.io.IOException
private void registerParsedQuery(SimpleQuery query, java.lang.String statementName)
private void processDeadParsedQueries() throws java.io.IOException
java.io.IOException
private void registerOpenPortal(Portal portal)
private void processDeadPortals() throws java.io.IOException
java.io.IOException
protected void processResults(ResultHandler handler, int flags) throws java.io.IOException
java.io.IOException
private void skipMessage() throws java.io.IOException
java.io.IOException
public void fetch(ResultCursor cursor, ResultHandler handler, int fetchSize) throws java.sql.SQLException
QueryExecutor
cursor
- the cursor to fetch fromhandler
- the handler to feed results tofetchSize
- the preferred number of rows to retrieve before suspendingjava.sql.SQLException
- if query execution failsprivate Field[] receiveFields() throws java.io.IOException
java.io.IOException
private void receiveAsyncNotify() throws java.io.IOException
java.io.IOException
private java.sql.SQLException receiveErrorResponse() throws java.io.IOException
java.io.IOException
private java.sql.SQLWarning receiveNoticeResponse() throws java.io.IOException
java.io.IOException
private java.lang.String receiveCommandStatus() throws java.io.IOException
java.io.IOException
private void interpretCommandStatus(java.lang.String status, ResultHandler handler)
private void receiveRFQ() throws java.io.IOException
java.io.IOException
protected void sendCloseMessage() throws java.io.IOException
sendCloseMessage
in class QueryExecutorBase
java.io.IOException
public void readStartupMessages() throws java.io.IOException, java.sql.SQLException
java.io.IOException
java.sql.SQLException
public void receiveParameterStatus() throws java.io.IOException, java.sql.SQLException
java.io.IOException
java.sql.SQLException
public void setTimeZone(java.util.TimeZone timeZone)
public java.util.TimeZone getTimeZone()
QueryExecutor
public void setApplicationName(java.lang.String applicationName)
public java.lang.String getApplicationName()
QueryExecutor
public ReplicationProtocol getReplicationProtocol()
public boolean useBinaryForReceive(int oid)
TypeTransferModeRegistry
oid
- type oidpublic void setBinaryReceiveOids(java.util.Set<java.lang.Integer> oids)
QueryExecutor
oids
- The oids to request with binary encoding.public boolean useBinaryForSend(int oid)
TypeTransferModeRegistry
oid
- type oidpublic void setBinarySendOids(java.util.Set<java.lang.Integer> oids)
QueryExecutor
oids
- The oids to send with binary encoding.private void setIntegerDateTimes(boolean state)
public boolean getIntegerDateTimes()
QueryExecutor