Class SimpleQuery

java.lang.Object
org.postgresql.core.v3.SimpleQuery
All Implemented Interfaces:
Query
Direct Known Subclasses:
BatchedQuery

class SimpleQuery extends Object implements Query
V3 Query implementation for a single-statement query. This also holds the state of any associated server-side named statement. We use a PhantomReference managed by the QueryExecutor to handle statement cleanup.
  • Field Details

    • LOGGER

      private static final Logger LOGGER
    • resultSetColumnNameIndexMap

      private Map<String,Integer> resultSetColumnNameIndexMap
    • nativeQuery

      private final NativeQuery nativeQuery
    • transferModeRegistry

      private final TypeTransferModeRegistry transferModeRegistry
    • statementName

      private String statementName
    • encodedStatementName

      private byte[] encodedStatementName
    • fields

      private Field[] fields
      The stored fields from previous execution or describe of a prepared statement. Always null for non-prepared statements.
    • needUpdateFieldFormats

      private boolean needUpdateFieldFormats
    • hasBinaryFields

      private boolean hasBinaryFields
    • portalDescribed

      private boolean portalDescribed
    • statementDescribed

      private boolean statementDescribed
    • sanitiserDisabled

      private final boolean sanitiserDisabled
    • cleanupRef

      private PhantomReference<?> cleanupRef
    • preparedTypes

      private int[] preparedTypes
    • unspecifiedParams

      private BitSet unspecifiedParams
    • deallocateEpoch

      private short deallocateEpoch
    • cachedMaxResultRowSize

      private Integer cachedMaxResultRowSize
    • NO_PARAMETERS

      static final SimpleParameterList NO_PARAMETERS
  • Constructor Details

  • Method Details

    • createParameterList

      public ParameterList createParameterList()
      Description copied from interface: Query
      Create a ParameterList suitable for storing parameters associated with this Query.

      If this query has no parameters, a ParameterList will be returned, but it may be a shared immutable object. If this query does have parameters, the returned ParameterList is a new list, unshared by other callers.

      Specified by:
      createParameterList in interface Query
      Returns:
      a suitable ParameterList instance for this query
    • toString

      public String toString(ParameterList parameters)
      Description copied from interface: Query
      Stringize this query to a human-readable form, substituting particular parameter values for parameter placeholders.
      Specified by:
      toString in interface Query
      Parameters:
      parameters - a ParameterList returned by this Query's Query.createParameterList() method, or null to leave the parameter placeholders unsubstituted.
      Returns:
      a human-readable representation of this query
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • close

      public void close()
      Description copied from interface: Query
      Close this query and free any server-side resources associated with it. The resources may not be immediately deallocated, but closing a Query may make the deallocation more prompt.

      A closed Query should not be executed.

      Specified by:
      close in interface Query
    • getSubqueries

      public SimpleQuery[] getSubqueries()
      Description copied from interface: Query
      Return a list of the Query objects that make up this query. If this object is already a SimpleQuery, returns null (avoids an extra array construction in the common case).
      Specified by:
      getSubqueries in interface Query
      Returns:
      an array of single-statement queries, or null if this object is already a single-statement query.
    • getMaxResultRowSize

      public int getMaxResultRowSize()
      Return maximum size in bytes that each result row from this query may return. Mainly used for batches that return results.

      Results are cached until/unless the query is re-described.

      Returns:
      Max size of result data in bytes according to returned fields, 0 if no results, -1 if result is unbounded.
      Throws:
      IllegalStateException - if the query is not described
    • getNativeSql

      public String getNativeSql()
      Description copied from interface: Query
      Returns SQL in native for database format.
      Specified by:
      getNativeSql in interface Query
      Returns:
      SQL in native for database format
    • setStatementName

      void setStatementName(String statementName, short deallocateEpoch)
    • setPrepareTypes

      void setPrepareTypes(int[] paramTypes)
    • getPrepareTypes

      int[] getPrepareTypes()
    • getStatementName

      String getStatementName()
    • isPreparedFor

      boolean isPreparedFor(int[] paramTypes, short deallocateEpoch)
    • hasUnresolvedTypes

      boolean hasUnresolvedTypes()
    • getEncodedStatementName

      byte[] getEncodedStatementName()
    • setFields

      void setFields(Field[] fields)
      Sets the fields that this query will return.
      Parameters:
      fields - The fields that this query will return.
    • getFields

      Field[] getFields()
      Returns the fields that this query will return. If the result set fields are not known returns null.
      Returns:
      the fields that this query will return.
    • needUpdateFieldFormats

      boolean needUpdateFieldFormats()
      Returns true if current query needs field formats be adjusted as per connection configuration. Subsequent invocations would return false. The idea is to perform adjustments only once, not for each QueryExecutorImpl.sendBind(SimpleQuery, SimpleParameterList, Portal, boolean).
      Returns:
      true if current query needs field formats be adjusted as per connection configuration
    • resetNeedUpdateFieldFormats

      public void resetNeedUpdateFieldFormats()
    • hasBinaryFields

      public boolean hasBinaryFields()
    • setHasBinaryFields

      public void setHasBinaryFields(boolean hasBinaryFields)
    • isPortalDescribed

      boolean isPortalDescribed()
    • setPortalDescribed

      void setPortalDescribed(boolean portalDescribed)
    • isStatementDescribed

      public boolean isStatementDescribed()
      Specified by:
      isStatementDescribed in interface Query
    • setStatementDescribed

      void setStatementDescribed(boolean statementDescribed)
    • isEmpty

      public boolean isEmpty()
      Specified by:
      isEmpty in interface Query
    • setCleanupRef

      void setCleanupRef(PhantomReference<?> cleanupRef)
    • unprepare

      void unprepare()
    • getBatchSize

      public int getBatchSize()
      Description copied from interface: Query
      Get the number of times this Query has been batched.
      Specified by:
      getBatchSize in interface Query
      Returns:
      number of times addBatch() has been called.
    • getNativeQuery

      NativeQuery getNativeQuery()
    • getBindCount

      public final int getBindCount()
    • getResultSetColumnNameIndexMap

      public Map<String,Integer> getResultSetColumnNameIndexMap()
      Description copied from interface: Query
      Get a map that a result set can use to find the index associated to a name.
      Specified by:
      getResultSetColumnNameIndexMap in interface Query
      Returns:
      null if the query implementation does not support this method.
    • getSqlCommand

      public SqlCommand getSqlCommand()
      Description copied from interface: Query
      Returns properties of the query (sql keyword, and some other parsing info).
      Specified by:
      getSqlCommand in interface Query
      Returns:
      returns properties of the query (sql keyword, and some other parsing info) or null if not applicable