Class SimpleParameterList

    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void appendAll​(ParameterList list)
      Use this operation to append more parameters to the current list.
      private void bind​(int index, java.lang.Object value, int oid, byte binary)  
      void checkAllParametersSet()
      Ensure that all parameters in this list have been assigned values.
      void clear()
      Unbind all parameter values bound in this list.
      void convertFunctionOutParameters()
      Convert any function output parameters to the correct type (void) and set an ignorable value for it.
      ParameterList copy()
      Perform a shallow copy of this ParameterList, returning a new instance (still suitable for passing to the owning Query).
      private byte direction​(int index)  
      byte[][] getEncoding()
      Return the encoding for each parameter.
      byte[] getFlags()
      Return the flags for each parameter.
      int getInParameterCount()
      Get the number of IN parameters in this list.
      int getOutParameterCount()
      Get the number of OUT parameters in this list.
      int getParameterCount()
      Get the number of parameters in this list.
      int[] getParamTypes()
      Return the parameter type information.
      SimpleParameterList[] getSubparams()
      Return a list of the SimpleParameterList objects that make up this parameter list.
      (package private) int getTypeOID​(int index)  
      int[] getTypeOIDs()
      Return the oids of the parameters in this list.
      (package private) int getV3Length​(int index)  
      java.lang.Object[] getValues()
      Returns the bound parameter values.
      (package private) boolean hasUnresolvedTypes()  
      (package private) boolean isBinary​(int index)  
      (package private) boolean isNull​(int index)  
      private static java.lang.String quoteAndCast​(java.lang.String text, java.lang.String type, boolean standardConformingStrings)
      Escapes a given text value as a literal, wraps it in single quotes, casts it to the to the given data type, and finally wraps the whole thing in parentheses.
      void registerOutParameter​(int index, int sqlType)  
      void setBinaryParameter​(int index, byte[] value, int oid)
      Binds given byte[] value to a parameter.
      void setBytea​(int index, byte[] data, int offset, int length)
      Binds a binary bytea value stored as a bytearray to a parameter.
      void setBytea​(int index, java.io.InputStream stream)
      Binds a binary bytea value stored as an InputStream.
      void setBytea​(int index, java.io.InputStream stream, int length)
      Binds a binary bytea value stored as an InputStream.
      void setBytea​(int index, ByteStreamWriter writer)
      Binds a binary bytea value stored as a ByteStreamWriter.
      void setIntParameter​(int index, int value)
      Binds an integer value to a parameter.
      void setLiteralParameter​(int index, java.lang.String value, int oid)
      Binds a String value that is an unquoted literal to the server's query parser (for example, a bare integer) to a parameter.
      void setNull​(int index, int oid)
      Binds a SQL NULL value to a parameter.
      (package private) void setResolvedType​(int index, int oid)  
      void setStringParameter​(int index, java.lang.String value, int oid)
      Binds a String value that needs to be quoted for the server's parser to understand (for example, a timestamp) to a parameter.
      void setText​(int index, java.io.InputStream stream)
      Binds a text value stored as an InputStream that is a valid UTF-8 byte stream.
      private static <E extends java.lang.Throwable>
      java.lang.RuntimeException
      sneakyThrow​(java.lang.Throwable e)  
      private static void streamBytea​(PGStream pgStream, ByteStreamWriter writer)  
      private static void streamBytea​(PGStream pgStream, StreamWrapper wrapper)  
      java.lang.String toString()
      Useful implementation of toString.
      java.lang.String toString​(int index, boolean standardConformingStrings)
      Return a human-readable representation of a particular parameter in this ParameterList.
      (package private) void writeV3Value​(int index, PGStream pgStream)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • paramValues

        private final java.lang.Object[] paramValues
      • paramTypes

        private final int[] paramTypes
      • flags

        private final byte[] flags
      • encoded

        private final byte[][] encoded
      • NULL_OBJECT

        private static final java.lang.Object NULL_OBJECT
        Marker object representing NULL; this distinguishes "parameter never set" from "parameter set to null".
      • pos

        private int pos
    • Method Detail

      • registerOutParameter

        public void registerOutParameter​(int index,
                                         int sqlType)
                                  throws java.sql.SQLException
        Specified by:
        registerOutParameter in interface ParameterList
        Throws:
        java.sql.SQLException
      • bind

        private void bind​(int index,
                          java.lang.Object value,
                          int oid,
                          byte binary)
                   throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • getParameterCount

        public int getParameterCount()
        Description copied from interface: ParameterList
        Get the number of parameters in this list. This value never changes for a particular instance, and might be zero.
        Specified by:
        getParameterCount in interface ParameterList
        Returns:
        the number of parameters in this list.
      • getOutParameterCount

        public int getOutParameterCount()
        Description copied from interface: ParameterList
        Get the number of OUT parameters in this list.
        Specified by:
        getOutParameterCount in interface ParameterList
        Returns:
        the number of OUT parameters in this list
      • getInParameterCount

        public int getInParameterCount()
        Description copied from interface: ParameterList
        Get the number of IN parameters in this list.
        Specified by:
        getInParameterCount in interface ParameterList
        Returns:
        the number of IN parameters in this list
      • setIntParameter

        public void setIntParameter​(int index,
                                    int value)
                             throws java.sql.SQLException
        Description copied from interface: ParameterList
        Binds an integer value to a parameter. The type of the parameter is implicitly 'int4'.
        Specified by:
        setIntParameter in interface ParameterList
        Parameters:
        index - the 1-based parameter index to bind.
        value - the integer value to use.
        Throws:
        java.sql.SQLException - on error or if index is out of range
      • setLiteralParameter

        public void setLiteralParameter​(int index,
                                        java.lang.String value,
                                        int oid)
                                 throws java.sql.SQLException
        Description copied from interface: ParameterList
        Binds a String value that is an unquoted literal to the server's query parser (for example, a bare integer) to a parameter. Associated with the parameter is a typename for the parameter that should correspond to an entry in pg_types.
        Specified by:
        setLiteralParameter in interface ParameterList
        Parameters:
        index - the 1-based parameter index to bind.
        value - the unquoted literal string to use.
        oid - the type OID of the parameter, or 0 to infer the type.
        Throws:
        java.sql.SQLException - on error or if index is out of range
      • setStringParameter

        public void setStringParameter​(int index,
                                       java.lang.String value,
                                       int oid)
                                throws java.sql.SQLException
        Description copied from interface: ParameterList
        Binds a String value that needs to be quoted for the server's parser to understand (for example, a timestamp) to a parameter. Associated with the parameter is a typename for the parameter that should correspond to an entry in pg_types.
        Specified by:
        setStringParameter in interface ParameterList
        Parameters:
        index - the 1-based parameter index to bind.
        value - the quoted string to use.
        oid - the type OID of the parameter, or 0 to infer the type.
        Throws:
        java.sql.SQLException - on error or if index is out of range
      • setBinaryParameter

        public void setBinaryParameter​(int index,
                                       byte[] value,
                                       int oid)
                                throws java.sql.SQLException
        Description copied from interface: ParameterList
        Binds given byte[] value to a parameter. The bytes must already be in correct format matching the OID.
        Specified by:
        setBinaryParameter in interface ParameterList
        Parameters:
        index - the 1-based parameter index to bind.
        value - the bytes to send.
        oid - the type OID of the parameter.
        Throws:
        java.sql.SQLException - on error or if index is out of range
      • setBytea

        public void setBytea​(int index,
                             byte[] data,
                             int offset,
                             int length)
                      throws java.sql.SQLException
        Description copied from interface: ParameterList
        Binds a binary bytea value stored as a bytearray to a parameter. The parameter's type is implicitly set to 'bytea'. The bytearray's contains should remain unchanged until query execution has completed.
        Specified by:
        setBytea in interface ParameterList
        Parameters:
        index - the 1-based parameter index to bind.
        data - an array containing the raw data value
        offset - the offset within data of the start of the parameter data.
        length - the number of bytes of parameter data within data to use.
        Throws:
        java.sql.SQLException - on error or if index is out of range
      • setBytea

        public void setBytea​(int index,
                             java.io.InputStream stream,
                             int length)
                      throws java.sql.SQLException
        Description copied from interface: ParameterList
        Binds a binary bytea value stored as an InputStream. The parameter's type is implicitly set to 'bytea'. The stream should remain valid until query execution has completed.
        Specified by:
        setBytea in interface ParameterList
        Parameters:
        index - the 1-based parameter index to bind.
        stream - a stream containing the parameter data.
        length - the number of bytes of parameter data to read from stream.
        Throws:
        java.sql.SQLException - on error or if index is out of range
      • setBytea

        public void setBytea​(int index,
                             java.io.InputStream stream)
                      throws java.sql.SQLException
        Description copied from interface: ParameterList
        Binds a binary bytea value stored as an InputStream. The parameter's type is implicitly set to 'bytea'. The stream should remain valid until query execution has completed.
        Specified by:
        setBytea in interface ParameterList
        Parameters:
        index - the 1-based parameter index to bind.
        stream - a stream containing the parameter data.
        Throws:
        java.sql.SQLException - on error or if index is out of range
      • setBytea

        public void setBytea​(int index,
                             ByteStreamWriter writer)
                      throws java.sql.SQLException
        Description copied from interface: ParameterList
        Binds a binary bytea value stored as a ByteStreamWriter. The parameter's type is implicitly set to 'bytea'. The stream should remain valid until query execution has completed.
        Specified by:
        setBytea in interface ParameterList
        Parameters:
        index - the 1-based parameter index to bind.
        writer - a writer that can write the bytes for the parameter
        Throws:
        java.sql.SQLException - on error or if index is out of range
      • setText

        public void setText​(int index,
                            java.io.InputStream stream)
                     throws java.sql.SQLException
        Description copied from interface: ParameterList
        Binds a text value stored as an InputStream that is a valid UTF-8 byte stream. Any byte-order marks (BOM) in the stream are passed to the backend. The parameter's type is implicitly set to 'text'. The stream should remain valid until query execution has completed.
        Specified by:
        setText in interface ParameterList
        Parameters:
        index - the 1-based parameter index to bind.
        stream - a stream containing the parameter data.
        Throws:
        java.sql.SQLException - on error or if index is out of range
      • setNull

        public void setNull​(int index,
                            int oid)
                     throws java.sql.SQLException
        Description copied from interface: ParameterList
        Binds a SQL NULL value to a parameter. Associated with the parameter is a typename for the parameter that should correspond to an entry in pg_types.
        Specified by:
        setNull in interface ParameterList
        Parameters:
        index - the 1-based parameter index to bind.
        oid - the type OID of the parameter, or 0 to infer the type.
        Throws:
        java.sql.SQLException - on error or if index is out of range
      • quoteAndCast

        private static java.lang.String quoteAndCast​(java.lang.String text,
                                                     java.lang.String type,
                                                     boolean standardConformingStrings)
        Escapes a given text value as a literal, wraps it in single quotes, casts it to the to the given data type, and finally wraps the whole thing in parentheses.

        For example, "123" and "int4" becomes "('123'::int)"

        The additional parentheses is added to ensure that the surrounding text of where the parameter value is entered does modify the interpretation of the value.

        For example if our input SQL is: SELECT ?b

        Using a parameter value of '{}' and type of json we'd get:

         test=# SELECT ('{}'::json)b;
          b
         ----
          {}
         

        But without the parentheses the result changes:

         test=# SELECT '{}'::jsonb;
         jsonb
         -------
         {}
         
      • sneakyThrow

        private static <E extends java.lang.Throwable> java.lang.RuntimeException sneakyThrow​(java.lang.Throwable e)
                                                                                       throws E extends java.lang.Throwable
        Throws:
        E extends java.lang.Throwable
      • toString

        public java.lang.String toString​(int index,
                                         boolean standardConformingStrings)
        Description copied from interface: ParameterList
        Return a human-readable representation of a particular parameter in this ParameterList. If the parameter is not bound, returns "?".
        Specified by:
        toString in interface ParameterList
        Parameters:
        index - the 1-based parameter index to bind.
        standardConformingStrings - true if \ is not an escape character in strings literals
        Returns:
        a string representation of the parameter.
      • checkAllParametersSet

        public void checkAllParametersSet()
                                   throws java.sql.SQLException
        Description copied from interface: V3ParameterList
        Ensure that all parameters in this list have been assigned values. Return silently if all is well, otherwise throw an appropriate exception.
        Specified by:
        checkAllParametersSet in interface V3ParameterList
        Throws:
        java.sql.SQLException - if not all parameters are set.
      • convertFunctionOutParameters

        public void convertFunctionOutParameters()
        Description copied from interface: V3ParameterList
        Convert any function output parameters to the correct type (void) and set an ignorable value for it.
        Specified by:
        convertFunctionOutParameters in interface V3ParameterList
      • streamBytea

        private static void streamBytea​(PGStream pgStream,
                                        StreamWrapper wrapper)
                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • streamBytea

        private static void streamBytea​(PGStream pgStream,
                                        ByteStreamWriter writer)
                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • getTypeOIDs

        public int[] getTypeOIDs()
        Description copied from interface: ParameterList
        Return the oids of the parameters in this list. May be null for a ParameterList that does not support typing of parameters.
        Specified by:
        getTypeOIDs in interface ParameterList
        Returns:
        oids of the parameters
      • getTypeOID

        int getTypeOID​(int index)
      • hasUnresolvedTypes

        boolean hasUnresolvedTypes()
      • setResolvedType

        void setResolvedType​(int index,
                             int oid)
      • isNull

        boolean isNull​(int index)
      • isBinary

        boolean isBinary​(int index)
      • direction

        private byte direction​(int index)
      • getV3Length

        int getV3Length​(int index)
      • writeV3Value

        void writeV3Value​(int index,
                          PGStream pgStream)
                   throws java.io.IOException
        Throws:
        java.io.IOException
      • copy

        public ParameterList copy()
        Description copied from interface: ParameterList
        Perform a shallow copy of this ParameterList, returning a new instance (still suitable for passing to the owning Query). If this ParameterList is immutable, copy() may return the same immutable object.
        Specified by:
        copy in interface ParameterList
        Returns:
        a new ParameterList instance
      • clear

        public void clear()
        Description copied from interface: ParameterList
        Unbind all parameter values bound in this list.
        Specified by:
        clear in interface ParameterList
      • getSubparams

        public SimpleParameterList[] getSubparams()
        Description copied from interface: V3ParameterList
        Return a list of the SimpleParameterList objects that make up this parameter list. If this object is already a SimpleParameterList, returns null (avoids an extra array construction in the common case).
        Specified by:
        getSubparams in interface V3ParameterList
        Returns:
        an array of single-statement parameter lists, or null if this object is already a single-statement parameter list.
      • getValues

        public java.lang.Object[] getValues()
        Description copied from interface: ParameterList
        Returns the bound parameter values.
        Specified by:
        getValues in interface ParameterList
        Returns:
        Object array containing the parameter values.
      • getParamTypes

        public int[] getParamTypes()
        Description copied from interface: V3ParameterList
        Return the parameter type information.
        Specified by:
        getParamTypes in interface V3ParameterList
        Returns:
        an array of Oid type information
      • getFlags

        public byte[] getFlags()
        Description copied from interface: V3ParameterList
        Return the flags for each parameter.
        Specified by:
        getFlags in interface V3ParameterList
        Returns:
        an array of bytes used to store flags.
      • getEncoding

        public byte[][] getEncoding()
        Description copied from interface: V3ParameterList
        Return the encoding for each parameter.
        Specified by:
        getEncoding in interface V3ParameterList
        Returns:
        nested byte array of bytes with encoding information.
      • appendAll

        public void appendAll​(ParameterList list)
                       throws java.sql.SQLException
        Description copied from interface: ParameterList
        Use this operation to append more parameters to the current list.
        Specified by:
        appendAll in interface ParameterList
        Parameters:
        list - of parameters to append with.
        Throws:
        java.sql.SQLException - fault raised if driver or back end throw an exception
      • toString

        public java.lang.String toString()
        Useful implementation of toString.
        Overrides:
        toString in class java.lang.Object
        Returns:
        String representation of the list values