パッケージ org.postgresql.core

インタフェース QueryExecutor

すべてのスーパーインタフェース:
TypeTransferModeRegistry
既知の実装クラスのリスト:
QueryExecutorBase, QueryExecutorImpl

public interface QueryExecutor extends TypeTransferModeRegistry

Abstracts the protocol-specific details of executing a query.

Every connection has a single QueryExecutor implementation associated with it. This object provides:

Query objects may represent a query that has parameter placeholders. To provide actual values for these parameters, a ParameterList object is created via a factory method ( Query.createParameterList()). The parameters are filled in by the caller and passed along with the query to the query execution methods. Several ParameterLists for a given query might exist at one time (or over time); this allows the underlying Query to be reused for several executions, or for batch execution of the same Query.

In general, a Query created by a particular QueryExecutor may only be executed by that QueryExecutor, and a ParameterList created by a particular Query may only be used as parameters to that Query. Unpredictable things will happen if this isn't done.

  • フィールド詳細

    • QUERY_ONESHOT

      static final int QUERY_ONESHOT
      Flag for query execution that indicates the given Query object is unlikely to be reused.
      関連項目:
    • QUERY_NO_METADATA

      static final int QUERY_NO_METADATA
      Flag for query execution that indicates that resultset metadata isn't needed and can be safely omitted.
      関連項目:
    • QUERY_NO_RESULTS

      static final int QUERY_NO_RESULTS
      Flag for query execution that indicates that a resultset isn't expected and the query executor can safely discard any rows (although the resultset should still appear to be from a resultset-returning query).
      関連項目:
    • QUERY_FORWARD_CURSOR

      static final int QUERY_FORWARD_CURSOR
      Flag for query execution that indicates a forward-fetch-capable cursor should be used if possible.
      関連項目:
    • QUERY_SUPPRESS_BEGIN

      static final int QUERY_SUPPRESS_BEGIN
      Flag for query execution that indicates the automatic BEGIN on the first statement when outside a transaction should not be done.
      関連項目:
    • QUERY_DESCRIBE_ONLY

      static final int QUERY_DESCRIBE_ONLY
      Flag for query execution when we don't really want to execute, we just want to get the parameter metadata for the statement.
      関連項目:
    • QUERY_BOTH_ROWS_AND_STATUS

      static final int QUERY_BOTH_ROWS_AND_STATUS
      Flag for query execution used by generated keys where we want to receive both the ResultSet and associated update count from the command status.
      関連項目:
    • QUERY_FORCE_DESCRIBE_PORTAL

      static final int QUERY_FORCE_DESCRIBE_PORTAL
      Force this query to be described at each execution. This is done in pipelined batches where we might need to detect mismatched result types.
      関連項目:
    • QUERY_DISALLOW_BATCHING

      @Deprecated static final int QUERY_DISALLOW_BATCHING
      推奨されていません。
      in PgJDBC 9.4 as we now auto-size batches.
      Flag to disable batch execution when we expect results (generated keys) from a statement.
      関連項目:
    • QUERY_NO_BINARY_TRANSFER

      static final int QUERY_NO_BINARY_TRANSFER
      Flag for query execution to avoid using binary transfer.
      関連項目:
    • QUERY_EXECUTE_AS_SIMPLE

      static final int QUERY_EXECUTE_AS_SIMPLE
      Execute the query via simple 'Q' command (not parse, bind, exec, but simple execute). This sends query text on each execution, however it supports sending multiple queries separated with ';' as a single command.
      関連項目:
    • MAX_SAVE_POINTS

      static final int MAX_SAVE_POINTS
      関連項目:
    • QUERY_READ_ONLY_HINT

      static final int QUERY_READ_ONLY_HINT
      Flag indicating that when beginning a transaction, it should be read only.
      関連項目:
  • メソッドの詳細

    • execute

      void execute(Query query, @Nullable ParameterList parameters, ResultHandler handler, int maxRows, int fetchSize, int flags) throws SQLException
      Execute a Query, passing results to a provided ResultHandler.
      パラメータ:
      query - the query to execute; must be a query returned from calling 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 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.
      例外:
      SQLException - if query execution fails
    • execute

      void execute(Query query, @Nullable ParameterList parameters, ResultHandler handler, int maxRows, int fetchSize, int flags, boolean adaptiveFetch) throws SQLException
      Execute a Query with adaptive fetch, passing results to a provided ResultHandler.
      パラメータ:
      query - the query to execute; must be a query returned from calling 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 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.
      adaptiveFetch - state of adaptiveFetch to use during execution
      例外:
      SQLException - if query execution fails
    • execute

      void execute(Query[] queries, @Nullable ParameterList[] parameterLists, BatchResultHandler handler, int maxRows, int fetchSize, int flags) throws SQLException
      Execute several Query, passing results to a provided ResultHandler.
      パラメータ:
      queries - the queries to execute; each must be a query returned from calling 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.
      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.
      例外:
      SQLException - if query execution fails
    • execute

      void execute(Query[] queries, @Nullable ParameterList[] parameterLists, BatchResultHandler handler, int maxRows, int fetchSize, int flags, boolean adaptiveFetch) throws SQLException
      Execute several Query with adaptive fetch, passing results to a provided ResultHandler.
      パラメータ:
      queries - the queries to execute; each must be a query returned from calling 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.
      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.
      adaptiveFetch - state of adaptiveFetch to use during execution
      例外:
      SQLException - if query execution fails
    • fetch

      void fetch(ResultCursor cursor, ResultHandler handler, int fetchSize, boolean adaptiveFetch) throws SQLException
      Fetch additional rows from a cursor.
      パラメータ:
      cursor - the cursor to fetch from
      handler - the handler to feed results to
      fetchSize - the preferred number of rows to retrieve before suspending
      adaptiveFetch - state of adaptiveFetch to use during fetching
      例外:
      SQLException - if query execution fails
    • createSimpleQuery

      Query createSimpleQuery(String sql) throws SQLException
      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.
      パラメータ:
      sql - the SQL for the query to create
      戻り値:
      a new Query object
      例外:
      SQLException - if something goes wrong
    • isReWriteBatchedInsertsEnabled

      boolean isReWriteBatchedInsertsEnabled()
    • createQuery

      CachedQuery createQuery(String sql, boolean escapeProcessing, boolean isParameterized, String @Nullable ... columnNames) throws SQLException
      例外:
      SQLException
    • createQueryKey

      Object createQueryKey(String sql, boolean escapeProcessing, boolean isParameterized, String @Nullable ... columnNames)
    • createQueryByKey

      CachedQuery createQueryByKey(Object key) throws SQLException
      例外:
      SQLException
    • borrowQueryByKey

      CachedQuery borrowQueryByKey(Object key) throws SQLException
      例外:
      SQLException
    • borrowQuery

      CachedQuery borrowQuery(String sql) throws SQLException
      例外:
      SQLException
    • borrowCallableQuery

      CachedQuery borrowCallableQuery(String sql) throws SQLException
      例外:
      SQLException
    • borrowReturningQuery

      CachedQuery borrowReturningQuery(String sql, String @Nullable [] columnNames) throws SQLException
      例外:
      SQLException
    • releaseQuery

      void releaseQuery(CachedQuery cachedQuery)
    • wrap

      Query wrap(List<NativeQuery> queries)
      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
    • processNotifies

      void processNotifies() throws SQLException
      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

      void processNotifies(int timeoutMillis) throws SQLException
      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 - number of milliseconds to block for
      例外:
      SQLException - if and error occurs while fetching notifications
    • createFastpathParameters

      @Deprecated ParameterList createFastpathParameters(int count)
      推奨されていません。
      This API is somewhat obsolete, as one may achieve similar performance and greater functionality by setting up a prepared statement to define the function call. Then, executing the statement with binary transmission of parameters and results substitutes for a fast-path function call.
      Create a new ParameterList implementation suitable for invoking a fastpath function via fastpathCall(int, org.postgresql.core.ParameterList, boolean).
      パラメータ:
      count - the number of parameters the fastpath call will take
      戻り値:
      a ParameterList suitable for passing to fastpathCall(int, org.postgresql.core.ParameterList, boolean).
    • fastpathCall

      @Deprecated byte @Nullable [] fastpathCall(int fnid, ParameterList params, boolean suppressBegin) throws SQLException
      推奨されていません。
      This API is somewhat obsolete, as one may achieve similar performance and greater functionality by setting up a prepared statement to define the function call. Then, executing the statement with binary transmission of parameters and results substitutes for a fast-path function call.
      Invoke a backend function via the fastpath interface.
      パラメータ:
      fnid - the OID of the backend function to invoke
      params - a ParameterList returned from createFastpathParameters(int) containing the parameters to pass to the backend function
      suppressBegin - 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
    • startCopy

      CopyOperation startCopy(String sql, boolean suppressBegin) throws SQLException
      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.
      パラメータ:
      sql - input sql
      suppressBegin - if begin should be suppressed
      戻り値:
      handler for associated operation
      例外:
      SQLException - when initializing the given query fails
    • getProtocolVersion

      int getProtocolVersion()
      戻り値:
      the version of the implementation
    • addBinaryReceiveOid

      void addBinaryReceiveOid(int oid)
      Adds a single oid that should be received using binary encoding.
      パラメータ:
      oid - The oid to request with binary encoding.
    • removeBinaryReceiveOid

      void removeBinaryReceiveOid(int oid)
      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

      @Deprecated Set<? extends Integer> getBinaryReceiveOids()
      推奨されていません。
      the method returns a copy of the set, so it is not efficient. Use TypeTransferModeRegistry.useBinaryForReceive(int)
      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.
    • setBinaryReceiveOids

      void setBinaryReceiveOids(Set<Integer> useBinaryForOids)
      Sets the oids that should be received using binary encoding.
      パラメータ:
      useBinaryForOids - The oids to request with binary encoding.
    • addBinarySendOid

      void addBinarySendOid(int oid)
      Adds a single oid that should be sent using binary encoding.
      パラメータ:
      oid - The oid to send with binary encoding.
    • removeBinarySendOid

      void removeBinarySendOid(int oid)
      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

      @Deprecated Set<? extends Integer> getBinarySendOids()
      推奨されていません。
      the method returns a copy of the set, so it is not efficient. Use TypeTransferModeRegistry.useBinaryForSend(int)
      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.
    • setBinarySendOids

      void setBinarySendOids(Set<Integer> useBinaryForOids)
      Sets the oids that should be sent using binary encoding.
      パラメータ:
      useBinaryForOids - The oids to send with binary encoding.
    • getIntegerDateTimes

      boolean getIntegerDateTimes()
      Returns true if server uses integer instead of double for binary date and time encodings.
      戻り値:
      the server integer_datetime setting.
    • getHostSpec

      HostSpec getHostSpec()
      戻り値:
      the host and port this connection is connected to.
    • getUser

      String getUser()
      戻り値:
      the user this connection authenticated as.
    • getDatabase

      String getDatabase()
      戻り値:
      the database this connection is connected to.
    • sendQueryCancel

      void sendQueryCancel() throws SQLException
      Sends a query cancellation for this connection.
      例外:
      SQLException - if something goes wrong.
    • getBackendPID

      int getBackendPID()
      Return the process ID (PID) of the backend server process handling this connection.
      戻り値:
      process ID (PID) of the backend server process handling this connection
    • abort

      void abort()
      Abort at network level without sending the Terminate message to the backend.
    • close

      void close()
      Close this connection cleanly.
    • getCloseAction

      Closeable getCloseAction()
      Returns an action that would close the connection cleanly. The returned object should refer only the minimum subset of objects required for proper resource cleanup. For instance, it should better not hold a strong reference to QueryExecutor.
      戻り値:
      action that would close the connection cleanly.
    • isClosed

      boolean isClosed()
      Check if this connection is closed.
      戻り値:
      true iff the connection is closed.
    • getServerVersion

      String getServerVersion()

      Return the server version from the server_version GUC.

      Note that there's no requirement for this to be numeric or of the form x.y.z. PostgreSQL development releases usually have the format x.ydevel e.g. 9.4devel; betas usually x.ybetan e.g. 9.4beta1. The --with-extra-version configure option may add an arbitrary string to this.

      Don't use this string for logic, only use it when displaying the server version to the user. Prefer getServerVersionNum() for all logic purposes.

      戻り値:
      the server version string from the server_version GUC
    • getNotifications

      PGNotification[] getNotifications() throws SQLException
      Retrieve and clear the set of asynchronous notifications pending on this connection.
      戻り値:
      an array of notifications; if there are no notifications, an empty array is returned.
      例外:
      SQLException - if and error occurs while fetching notifications
    • getWarnings

      @Nullable SQLWarning getWarnings()
      Retrieve and clear the chain of warnings accumulated on this connection.
      戻り値:
      the first SQLWarning in the chain; subsequent warnings can be found via SQLWarning.getNextWarning().
    • getServerVersionNum

      int getServerVersionNum()

      Get a machine-readable server version.

      This returns the value of the server_version_num GUC. If no such GUC exists, it falls back on attempting to parse the text server version for the major version. If there's no minor version (e.g. a devel or beta release) then the minor version is set to zero. If the version could not be parsed, zero is returned.

      戻り値:
      the server version in numeric XXYYZZ form, eg 090401, from server_version_num
    • getTransactionState

      TransactionState getTransactionState()
      Get the current transaction state of this connection.
      戻り値:
      a ProtocolConnection.TRANSACTION_* constant.
    • getStandardConformingStrings

      boolean getStandardConformingStrings()
      Returns whether the server treats string-literals according to the SQL standard or if it uses traditional PostgreSQL escaping rules. Versions up to 8.1 always treated backslashes as escape characters in string-literals. Since 8.2, this depends on the value of the standard_conforming_strings server variable.
      戻り値:
      true if the server treats string literals according to the SQL standard
    • getQuoteReturningIdentifiers

      boolean getQuoteReturningIdentifiers()
      戻り値:
      true if we are going to quote identifier provided in the returning array default is true
    • getTimeZone

      @Nullable TimeZone getTimeZone()
      Returns backend timezone in java format.
      戻り値:
      backend timezone in java format.
    • getEncoding

      Encoding getEncoding()
      戻り値:
      the current encoding in use by this connection
    • getApplicationName

      String getApplicationName()
      Returns application_name connection property.
      戻り値:
      application_name connection property
    • isColumnSanitiserDisabled

      boolean isColumnSanitiserDisabled()
    • getEscapeSyntaxCallMode

      EscapeSyntaxCallMode getEscapeSyntaxCallMode()
    • getPreferQueryMode

      PreferQueryMode getPreferQueryMode()
    • setPreferQueryMode

      void setPreferQueryMode(PreferQueryMode mode)
    • getAutoSave

      AutoSave getAutoSave()
    • setAutoSave

      void setAutoSave(AutoSave autoSave)
    • willHealOnRetry

      boolean willHealOnRetry(SQLException e)
    • setFlushCacheOnDeallocate

      void setFlushCacheOnDeallocate(boolean flushCacheOnDeallocate)
      By default, the connection resets statement cache in case deallocate all/discard all message is observed. This API allows to disable that feature for testing purposes.
      パラメータ:
      flushCacheOnDeallocate - true if statement cache should be reset when "deallocate/discard" message observed
    • getReplicationProtocol

      ReplicationProtocol getReplicationProtocol()
      戻り値:
      the ReplicationProtocol instance for this connection.
    • setNetworkTimeout

      void setNetworkTimeout(int milliseconds) throws IOException
      例外:
      IOException
    • getNetworkTimeout

      int getNetworkTimeout() throws IOException
      例外:
      IOException
    • getParameterStatuses

      Map<String,String> getParameterStatuses()
    • getParameterStatus

      @Nullable String getParameterStatus(String parameterName)
    • getAdaptiveFetchSize

      int getAdaptiveFetchSize(boolean adaptiveFetch, ResultCursor cursor)
      Get fetch size computed by adaptive fetch size for given query.
      パラメータ:
      adaptiveFetch - state of adaptive fetch, which should be used during retrieving
      cursor - 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
    • getAdaptiveFetch

      boolean getAdaptiveFetch()
      Get state of adaptive fetch inside QueryExecutor.
      戻り値:
      state of adaptive fetch inside QueryExecutor
    • setAdaptiveFetch

      void setAdaptiveFetch(boolean adaptiveFetch)
      Set state of adaptive fetch inside QueryExecutor.
      パラメータ:
      adaptiveFetch - desired state of adaptive fetch
    • addQueryToAdaptiveFetchCache

      void addQueryToAdaptiveFetchCache(boolean adaptiveFetch, ResultCursor cursor)
      Add query to adaptive fetch cache inside QueryExecutor.
      パラメータ:
      adaptiveFetch - state of adaptive fetch used during adding query
      cursor - Cursor used by resultSet, containing query, have to be able to cast to Portal class.
    • removeQueryFromAdaptiveFetchCache

      void removeQueryFromAdaptiveFetchCache(boolean adaptiveFetch, ResultCursor cursor)
      Remove query from adaptive fetch cache inside QueryExecutor
      パラメータ:
      adaptiveFetch - state of adaptive fetch used during removing query
      cursor - Cursor used by resultSet, containing query, have to be able to cast to Portal class.