org.postgresql.core.v2
Class QueryExecutorImpl

java.lang.Object
  extended by org.postgresql.core.v2.QueryExecutorImpl
All Implemented Interfaces:
QueryExecutor

public class QueryExecutorImpl
extends Object
implements QueryExecutor

QueryExecutor implementation for the V2 protocol.


Field Summary
 
Fields inherited from interface org.postgresql.core.QueryExecutor
QUERY_BOTH_ROWS_AND_STATUS, QUERY_DESCRIBE_ONLY, QUERY_DISALLOW_BATCHING, QUERY_FORWARD_CURSOR, QUERY_NO_METADATA, QUERY_NO_RESULTS, QUERY_ONESHOT, QUERY_SUPPRESS_BEGIN
 
Constructor Summary
QueryExecutorImpl(org.postgresql.core.v2.ProtocolConnectionImpl protoConnection, PGStream pgStream, Logger logger)
           
 
Method Summary
 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)
          Create a parameterized Query object suitable for execution by this QueryExecutor.
 Query createSimpleQuery(String sql)
          Create an unparameterized Query object suitable for execution by this QueryExecutor.
 void execute(Query[] queries, ParameterList[] parameters, ResultHandler handler, 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 rows)
          Fetch additional rows from a cursor.
 void processNotifies()
          Prior to attempting to retrieve notifications, we need to pull any recently received notifications off of the network buffers.
protected  void processResults(Query originalQuery, ResultHandler handler, int maxRows, int flags)
           
protected  void sendQuery(org.postgresql.core.v2.V2Query query, org.postgresql.core.v2.SimpleParameterList params, String queryPrefix)
           
 CopyOperation startCopy(String sql, boolean suppressBegin)
          Issues a COPY FROM STDIN / COPY TO STDOUT statement and returns handler for associated operation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

QueryExecutorImpl

public QueryExecutorImpl(org.postgresql.core.v2.ProtocolConnectionImpl protoConnection,
                         PGStream pgStream,
                         Logger logger)
Method Detail

createSimpleQuery

public Query createSimpleQuery(String sql)
Description copied from interface: QueryExecutor
Create an unparameterized Query object suitable for execution by this QueryExecutor. The provided query string is not parsed for parameter placeholders ('?' characters), and the Query.createParameterList() of the returned object will always return an empty ParameterList.

Specified by:
createSimpleQuery in interface QueryExecutor
Parameters:
sql - the SQL for the query to create
Returns:
a new Query object

createParameterizedQuery

public Query createParameterizedQuery(String sql)
Description copied from interface: QueryExecutor
Create a parameterized Query object suitable for execution by this QueryExecutor. The provided query string is parsed for parameter placeholders ('?' characters), and the Query.createParameterList() of the returned object will create an appropriately-sized ParameterList.

Specified by:
createParameterizedQuery in interface QueryExecutor
Parameters:
sql - the SQL for the query to create, with '?' placeholders for parameters.
Returns:
a new Query object

createFastpathParameters

public ParameterList createFastpathParameters(int count)
Description copied from interface: QueryExecutor
Create a new ParameterList implementation suitable for invoking a fastpath function via QueryExecutor.fastpathCall(int, org.postgresql.core.ParameterList, boolean).

Specified by:
createFastpathParameters in interface QueryExecutor
Parameters:
count - the number of parameters the fastpath call will take
Returns:
a ParameterList suitable for passing to QueryExecutor.fastpathCall(int, org.postgresql.core.ParameterList, boolean).

fastpathCall

public byte[] fastpathCall(int fnid,
                           ParameterList parameters,
                           boolean suppressBegin)
                    throws SQLException
Description copied from interface: QueryExecutor
Invoke a backend function via the fastpath interface.

Specified by:
fastpathCall in interface QueryExecutor
Parameters:
fnid - the OID of the backend function to invoke
parameters - a ParameterList returned from QueryExecutor.createFastpathParameters(int) containing the parameters to pass to the backend function
Returns:
the binary-format result of the fastpath call, or null if a void result was returned
Throws:
SQLException - if an error occurs while executing the fastpath call

processNotifies

public void processNotifies()
                     throws SQLException
Description copied from interface: 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.

Specified by:
processNotifies in interface QueryExecutor
Throws:
SQLException

execute

public void execute(Query query,
                    ParameterList parameters,
                    ResultHandler handler,
                    int maxRows,
                    int fetchSize,
                    int flags)
             throws SQLException
Description copied from interface: QueryExecutor
Execute a Query, passing results to a provided ResultHandler.

Specified by:
execute in interface QueryExecutor
Parameters:
query - the query to execute; must be a query returned from calling QueryExecutor.createSimpleQuery(String) or QueryExecutor.createParameterizedQuery(String) 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 query
maxRows - the maximum number of rows to retrieve
fetchSize - if QUERY_FORWARD_CURSOR is set, the preferred number of rows to retrieve before suspending
flags - a combination of QUERY_* flags indicating how to handle the query.
Throws:
SQLException - if query execution fails

execute

public void execute(Query[] queries,
                    ParameterList[] parameters,
                    ResultHandler handler,
                    int maxRows,
                    int fetchSize,
                    int flags)
             throws SQLException
Description copied from interface: QueryExecutor
Execute several Query, passing results to a provided ResultHandler.

Specified by:
execute in interface QueryExecutor
Parameters:
queries - the queries to execute; each must be a query returned from calling QueryExecutor.createSimpleQuery(String) or QueryExecutor.createParameterizedQuery(String) on this QueryExecutor object.
parameters - 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.
handler - a ResultHandler responsible for handling results generated by this query
maxRows - the maximum number of rows to retrieve
fetchSize - if QUERY_FORWARD_CURSOR is set, the preferred number of rows to retrieve before suspending
flags - a combination of QUERY_* flags indicating how to handle the query.
Throws:
SQLException - if query execution fails

fetch

public void fetch(ResultCursor cursor,
                  ResultHandler handler,
                  int rows)
           throws SQLException
Description copied from interface: QueryExecutor
Fetch additional rows from a cursor.

Specified by:
fetch in interface QueryExecutor
Parameters:
cursor - the cursor to fetch from
handler - the handler to feed results to
rows - the preferred number of rows to retrieve before suspending
Throws:
SQLException - if query execution fails

sendQuery

protected void sendQuery(org.postgresql.core.v2.V2Query query,
                         org.postgresql.core.v2.SimpleParameterList params,
                         String queryPrefix)
                  throws IOException
Throws:
IOException

processResults

protected void processResults(Query originalQuery,
                              ResultHandler handler,
                              int maxRows,
                              int flags)
                       throws IOException
Throws:
IOException

startCopy

public CopyOperation startCopy(String sql,
                               boolean suppressBegin)
                        throws SQLException
Description copied from interface: QueryExecutor
Issues a COPY FROM STDIN / COPY TO STDOUT statement and returns handler for associated operation. Until the copy operation completes, no other database operation may be performed. Implemented for protocol version 3 only.

Specified by:
startCopy in interface QueryExecutor
Throws:
SQLException - when initializing the given query fails


Copyright © 2013. All Rights Reserved.