Class ArrayType
Types.ARRAY, e.g. integer[], text[]) and their
PostgreSQL literal text representation, such as {1,2,3} or
{"a","b","c"}.
PostgreSQL reports every array column's sql type name as its element
type's own pg_catalog name prefixed with an underscore (for example
_int4 for an integer[] column); PostgresqlDataTypeFactory constructs the matching instance for each
column automatically, passing that name through unchanged. There is
normally no need to instantiate this class directly.
This class round-trips a column's literal text between the driver and the
dataset; it does not typecast individual elements to their Java
equivalents, and comparisons against an expected dataset value are plain
string comparisons. On write, the literal text is split into its
top-level elements - honoring double-quoted elements (backslash-escaped
internally), backslash-escaped characters outside quotes, and the
unquoted NULL keyword - and bound via Connection.createArrayOf(String, Object[]), letting PostgreSQL itself
parse and validate each element against the column's actual base type.
Only single-dimension arrays are supported for writing; a literal
containing a nested array (a multi-dimensional array) is rejected with a
TypeCastException. Reading one back for comparison or export works
fine either way, since the literal text is never parsed on read.
- Since:
- 3.5.0
- Author:
- Jeff Jensen
-
Field Summary
Fields inherited from class org.dbunit.dataset.datatype.DataType
BIGINT, BIGINT_AUX_LONG, BINARY, BIT, BLOB, BOOLEAN, CHAR, CLOB, DATE, DECIMAL, DOUBLE, FLOAT, INTEGER, LONGNVARCHAR, LONGVARBINARY, LONGVARCHAR, NCHAR, NUMERIC, NVARCHAR, REAL, RELATIVE_DATE_TIME_PARSER, SMALLINT, TIME, TIMESTAMP, TINYINT, UNKNOWN, VARBINARY, VARCHAR -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionReturns the sql type name this instance handles.getSqlValue(int column, ResultSet resultSet) Returns the specified column value from the specified resultset object.voidsetSqlValue(Object value, int column, PreparedStatement statement) Set the specified value to the specified prepared statement object.Returns the specified value typecasted to thisDataTypeMethods inherited from class org.dbunit.dataset.datatype.AbstractDataType
areObjectsEqual, compare, compareNonNulls, getSqlType, getTypeClass, isDateTime, isNumber, loadClass, loadClass, toStringMethods inherited from class org.dbunit.dataset.datatype.DataType
asString, forObject, forSqlType, forSqlTypeName, isExtendedSyntax
-
Constructor Details
-
ArrayType
Creates a data type adapter for the given PostgreSQL array sql type name.- Parameters:
sqlTypeName- The sql type name reported for the array column, e.g."_int4"for aninteger[]column.
-
-
Method Details
-
getSqlValue
Description copied from class:DataTypeReturns the specified column value from the specified resultset object.- Overrides:
getSqlValuein classAbstractDataType- Parameters:
column- the column index to read, starting at 1.resultSet- the result set to read the column value from.- Returns:
- the column value.
- Throws:
SQLException- if a database access error occurs.TypeCastException- if the value cannot be typecast to thisDataType.
-
setSqlValue
public void setSqlValue(Object value, int column, PreparedStatement statement) throws SQLException, TypeCastException Description copied from class:DataTypeSet the specified value to the specified prepared statement object.- Overrides:
setSqlValuein classAbstractDataType- Parameters:
value- the value to bind.column- the parameter index to bind to, starting at 1.statement- the prepared statement to bind the value on.- Throws:
SQLException- if a database access error occurs.TypeCastException- if the value cannot be typecast to thisDataType.
-
typeCast
Description copied from class:DataTypeReturns the specified value typecasted to thisDataType- Specified by:
typeCastin classDataType- Parameters:
value- the value to typecast.- Returns:
- the typecast value.
- Throws:
TypeCastException- if the value cannot be typecast to thisDataType.
-
getSqlTypeName
Returns the sql type name this instance handles.- Overrides:
getSqlTypeNamein classDataType- Returns:
- The array sql type name this instance was constructed with,
e.g.
"_int4".
-