public class QueryExecutorImpl extends Object implements QueryExecutor
QUERY_BOTH_ROWS_AND_STATUS, QUERY_DESCRIBE_ONLY, QUERY_DISALLOW_BATCHING, QUERY_FORCE_DESCRIBE_PORTAL, QUERY_FORWARD_CURSOR, QUERY_NO_BINARY_TRANSFER, QUERY_NO_METADATA, QUERY_NO_RESULTS, QUERY_ONESHOT, QUERY_SUPPRESS_BEGIN| Constructor and Description |
|---|
QueryExecutorImpl(org.postgresql.core.v3.ProtocolConnectionImpl protoConnection,
PGStream pgStream,
Properties info,
Logger logger) |
| 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 |
createParameterizedQuery(String sql,
boolean autocommit)
Create a parameterized Query object suitable for execution by this QueryExecutor.
|
Query |
createSimpleQuery(String sql,
boolean autocommit)
Create an unparameterized Query object suitable for execution by this QueryExecutor.
|
void |
doSubprotocolBegin() |
long |
endCopy(CopyInImpl 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(CopyInImpl op) |
void |
processNotifies()
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) |
CopyOperation |
startCopy(String sql,
boolean suppressBegin)
Sends given query to BE to start, initialize and lock connection for a CopyOperation.
|
void |
writeToCopy(CopyInImpl op,
byte[] data,
int off,
int siz)
Sends data during a live COPY IN operation.
|
public QueryExecutorImpl(org.postgresql.core.v3.ProtocolConnectionImpl protoConnection,
PGStream pgStream,
Properties info,
Logger logger)
public Query createSimpleQuery(String sql, boolean autocommit)
QueryExecutorQuery.createParameterList() of the returned object will always return an empty
ParameterList.createSimpleQuery in interface QueryExecutorsql - the SQL for the query to createautocommit - indicating when connection has autocommit enabled.public Query createParameterizedQuery(String sql, boolean autocommit)
QueryExecutorQuery.createParameterList() of the returned object will create an appropriately-sized
ParameterList.createParameterizedQuery in interface QueryExecutorsql - the SQL for the query to create, with '?' placeholders for parameters.autocommit - indicating when connection has autocommit enabled.public void execute(Query query, ParameterList parameters, ResultHandler handler, int maxRows, int fetchSize, int flags) throws SQLException
QueryExecutorexecute in interface QueryExecutorquery - the query to execute; must be a query returned from calling
QueryExecutor.createSimpleQuery(String, boolean) or QueryExecutor.createParameterizedQuery(String, boolean) 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[] queries, ParameterList[] parameterLists, BatchResultHandler batchHandler, int maxRows, int fetchSize, int flags) throws SQLException
QueryExecutorexecute in interface QueryExecutorqueries - the queries to execute; each must be a query returned from calling
QueryExecutor.createSimpleQuery(String, boolean) or QueryExecutor.createParameterizedQuery(String, boolean)
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 byte[] fastpathCall(int fnid,
ParameterList parameters,
boolean suppressBegin)
throws SQLException
QueryExecutorfastpathCall in interface QueryExecutorfnid - 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
SQLExceptionpublic ParameterList createFastpathParameters(int count)
QueryExecutorQueryExecutor.fastpathCall(int, org.postgresql.core.ParameterList, boolean).createFastpathParameters in interface QueryExecutorcount - the number of parameters the fastpath call will takeQueryExecutor.fastpathCall(int, org.postgresql.core.ParameterList, boolean).public void processNotifies()
throws SQLException
QueryExecutorprocessNotifies in interface QueryExecutorSQLException - if and error occurs while fetching notificationspublic CopyOperation startCopy(String sql, boolean suppressBegin) throws SQLException
startCopy in interface QueryExecutorsql - 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(CopyInImpl op) throws SQLException
op - the copy operation presumably currently holding lock on this connectionSQLException - on failurepublic void writeToCopy(CopyInImpl 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 flushCopy(CopyInImpl op) throws SQLException
SQLExceptionprotected void processResults(ResultHandler handler, int flags) throws IOException
IOExceptionpublic void fetch(ResultCursor cursor, ResultHandler handler, int fetchSize) throws SQLException
QueryExecutorfetch in interface QueryExecutorcursor - the cursor to fetch fromhandler - the handler to feed results tofetchSize - the preferred number of rows to retrieve before suspendingSQLException - if query execution failsCopyright © 2016 PostgreSQL Global Development Group. All rights reserved.