Package org.postgresql.core.v3
Class CompositeParameterList
- java.lang.Object
-
- org.postgresql.core.v3.CompositeParameterList
-
- All Implemented Interfaces:
ParameterList
,V3ParameterList
class CompositeParameterList extends java.lang.Object implements V3ParameterList
Parameter list for V3 query strings that contain multiple statements. We delegate to one SimpleParameterList per statement, and translate parameter indexes as needed.
-
-
Field Summary
Fields Modifier and Type Field Description private int[]
offsets
private SimpleParameterList[]
subparams
private int
total
-
Constructor Summary
Constructors Constructor Description CompositeParameterList(SimpleParameterList[] subparams, int[] offsets)
-
Method Summary
All 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.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 int
findSubParam(int index)
int
getDirection(int i)
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.int[]
getTypeOIDs()
Return the oids of the parameters in this list.java.lang.Object[]
getValues()
Returns the bound parameter values.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.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.java.lang.String
toString(int index, boolean standardConformingStrings)
Return a human-readable representation of a particular parameter in this ParameterList.java.lang.String
toString(int index, SqlSerializationContext context)
Return the string literal representation of a particular parameter in this ParameterList.
-
-
-
Field Detail
-
total
private final int total
-
subparams
private final SimpleParameterList[] subparams
-
offsets
private final int[] offsets
-
-
Constructor Detail
-
CompositeParameterList
CompositeParameterList(SimpleParameterList[] subparams, int[] offsets)
-
-
Method Detail
-
findSubParam
private int findSubParam(int index) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
registerOutParameter
public void registerOutParameter(int index, int sqlType)
- Specified by:
registerOutParameter
in interfaceParameterList
-
getDirection
public int getDirection(int i)
-
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 interfaceParameterList
- Returns:
- the number of 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 interfaceParameterList
- Returns:
- the number of IN 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 interfaceParameterList
- Returns:
- the number of OUT parameters in this list
-
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 interfaceParameterList
- Returns:
- oids of the parameters
-
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 interfaceParameterList
- Parameters:
index
- the 1-based parameter index to bind.value
- the integer value to use.- Throws:
java.sql.SQLException
- on error or ifindex
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 interfaceParameterList
- Parameters:
index
- the 1-based parameter index to bind.value
- the unquoted literal string to use.oid
- the type OID of the parameter, or0
to infer the type.- Throws:
java.sql.SQLException
- on error or ifindex
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 interfaceParameterList
- Parameters:
index
- the 1-based parameter index to bind.value
- the quoted string to use.oid
- the type OID of the parameter, or0
to infer the type.- Throws:
java.sql.SQLException
- on error or ifindex
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 interfaceParameterList
- 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 ifindex
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 interfaceParameterList
- Parameters:
index
- the 1-based parameter index to bind.data
- an array containing the raw data valueoffset
- the offset withindata
of the start of the parameter data.length
- the number of bytes of parameter data withindata
to use.- Throws:
java.sql.SQLException
- on error or ifindex
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 interfaceParameterList
- 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 fromstream
.- Throws:
java.sql.SQLException
- on error or ifindex
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 interfaceParameterList
- Parameters:
index
- the 1-based parameter index to bind.stream
- a stream containing the parameter data.- Throws:
java.sql.SQLException
- on error or ifindex
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 interfaceParameterList
- 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 ifindex
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 interfaceParameterList
- Parameters:
index
- the 1-based parameter index to bind.stream
- a stream containing the parameter data.- Throws:
java.sql.SQLException
- on error or ifindex
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 interfaceParameterList
- Parameters:
index
- the 1-based parameter index to bind.oid
- the type OID of the parameter, or0
to infer the type.- Throws:
java.sql.SQLException
- on error or ifindex
is out of range
-
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 or is of type bytea sourced from an InputStream, returns "?". This method will NOT consume InputStreams, instead "?" will be returned.- Specified by:
toString
in interfaceParameterList
- 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.
-
toString
public java.lang.String toString(int index, SqlSerializationContext context)
Description copied from interface:ParameterList
Return the string literal representation of a particular parameter in this ParameterList. If the parameter is not bound, returns "?". This method will consume all InputStreams to produce the result.- Specified by:
toString
in interfaceParameterList
- Parameters:
index
- the 1-based parameter index to bind.context
- specifies configuration for converting the parameters to string- Returns:
- a string representation of the parameter.
-
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 interfaceParameterList
- 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 interfaceParameterList
-
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 interfaceV3ParameterList
- Returns:
- an array of single-statement parameter lists, or
null
if this object is already a single-statement parameter list.
-
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 interfaceV3ParameterList
- Throws:
java.sql.SQLException
- if not all parameters are set.
-
getEncoding
public byte[][] getEncoding()
Description copied from interface:V3ParameterList
Return the encoding for each parameter.- Specified by:
getEncoding
in interfaceV3ParameterList
- Returns:
- nested byte array of bytes with encoding information.
-
getFlags
public byte[] getFlags()
Description copied from interface:V3ParameterList
Return the flags for each parameter.- Specified by:
getFlags
in interfaceV3ParameterList
- Returns:
- an array of bytes used to store flags.
-
getParamTypes
public int[] getParamTypes()
Description copied from interface:V3ParameterList
Return the parameter type information.- Specified by:
getParamTypes
in interfaceV3ParameterList
- Returns:
- an array of
Oid
type information
-
getValues
public java.lang.Object[] getValues()
Description copied from interface:ParameterList
Returns the bound parameter values.- Specified by:
getValues
in interfaceParameterList
- Returns:
- Object array containing the parameter values.
-
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 interfaceParameterList
- Parameters:
list
- of parameters to append with.- Throws:
java.sql.SQLException
- fault raised if driver or back end throw an exception
-
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 interfaceV3ParameterList
-
-