Top Description Fields Constructors Methods
org.hsqldb.types

public Class BinaryType

extends Type
Class Inheritance
Known Direct Subclasses
org.hsqldb.types.BinaryUUIDType, org.hsqldb.types.BitType, org.hsqldb.types.BlobType
Imports
org.hsqldb.OpTypes, .Session, .SessionInterface, .Tokens, org.hsqldb.error.Error, .ErrorCode, org.hsqldb.lib.ArrayUtil, .StringConverter

Type implementation for BINARY, VARBINARY and (part) BLOB.

SQL:2008 Standard specifies silent truncation of zero bytes at the end of the binary strings used for assignment and concatenation.

A binary string of type BINARY VARYING and BLOB when assigned to a column of similar type but shorter maximum length.

The Second operand of a concatenation when the length of the result exceeds the maximum implementation-dependent length of BINARY VARYING and BLOB binary strings.

The behaviour is similar to trimming of space characters from strings of CHARACTER VARYING and CLOB types.

In most real-world use-cases, all the bytes of variable-length binary values stored in a database are significant and should not be discarded.

HSQLDB follows the Standard completely, despite this inadequacy.

Comparison of binary values follows the Standard. When two values are not the same length and all the bytes of the shorter value equal the initial sequence of bytes of the longer value, then the shorter value is the smaller. The Standard treats this determination as implementation dependent.

BIT types, which were part of the SQL:1999, can be converted to and from BINARY. The BIT strings may be padded with zero bits for byte alignment.

As an extension to the Standard, HSQLDB supports cast from CHARACTER types to BINARY. The length of the string must be even and all character must be hexadecimal characters.

Author
Fred Toussi (fredt@users dot sourceforge.net)
Since
1.9.0
Version
2.7.0

Field Summary

Modifier and TypeField and Description
public static final long
Inherited from org.hsqldb.types.Type:
emptyArrayjdbcConvertTypesOTHERprecisionscaleSQL_ALL_TYPESSQL_ARRAY_ALL_TYPESSQL_BIGINTSQL_BINARYSQL_BINARY_16SQL_BINARY_DEFAULTSQL_BITSQL_BIT_VARYINGSQL_BIT_VARYING_MAX_LENGTHSQL_BLOBSQL_BOOLEANSQL_CHARSQL_CHAR_DEFAULTSQL_CHAR_UUIDSQL_CLOBSQL_DATESQL_DECIMALSQL_DECIMAL_BIGINT_SQRSQL_DECIMAL_DEFAULTSQL_DOUBLESQL_GUIDSQL_INTEGERSQL_INTERVAL_DAYSQL_INTERVAL_DAY_MAX_PRECISIONSQL_INTERVAL_DAY_TO_HOURSQL_INTERVAL_DAY_TO_MINUTESQL_INTERVAL_DAY_TO_SECONDSQL_INTERVAL_DAY_TO_SECOND_MAX_PRECISIONSQL_INTERVAL_HOURSQL_INTERVAL_HOUR_MAX_PRECISIONSQL_INTERVAL_HOUR_TO_MINUTESQL_INTERVAL_HOUR_TO_SECONDSQL_INTERVAL_MINUTESQL_INTERVAL_MINUTE_MAX_PRECISIONSQL_INTERVAL_MINUTE_TO_SECONDSQL_INTERVAL_MONTHSQL_INTERVAL_MONTH_MAX_PRECISIONSQL_INTERVAL_SECONDSQL_INTERVAL_SECOND_MAX_FRACTIONSQL_INTERVAL_SECOND_MAX_FRACTION_MAX_PRECISIONSQL_INTERVAL_SECOND_MAX_PRECISIONSQL_INTERVAL_YEARSQL_INTERVAL_YEAR_MAX_PRECISIONSQL_INTERVAL_YEAR_TO_MONTHSQL_INTERVAL_YEAR_TO_MONTH_MAX_PRECISIONSQL_NUMERICSQL_SMALLINTSQL_TIMESQL_TIME_MAXSQL_TIME_WITH_TIME_ZONESQL_TIME_WITH_TIME_ZONE_MAXSQL_TIMESTAMPSQL_TIMESTAMP_NO_FRACTIONSQL_TIMESTAMP_WITH_TIME_ZONESQL_TIMESTAMP_WITH_TIME_ZONE_MAXSQL_VARBINARYSQL_VARBINARY_DEFAULTSQL_VARCHARSQL_VARCHAR_DEFAULTSQL_VARCHAR_LONGTINYINTtypeAliasestypeCodetypeComparisonGrouptypeDataGrouptypeNamesuserTypeModifier

Constructor Summary

AccessConstructor and Description
protected
BinaryType(int type, long precision)

Method Summary

Modifier and TypeMethod and Description
public boolean
public boolean
public int
canMoveFrom(Type otherType)

Overrides org.hsqldb.types.Type.canMoveFrom.

When canConvertFrom() is true, can convert without changing the object

pack-priv Object
castOrConvertToType(SessionInterface session, Object a, Type otherType, boolean cast)

public Object
castToType(SessionInterface session, Object a, Type otherType)

Overrides org.hsqldb.types.Type.castToType.

Explicit casts are handled by this method.

public int
compare(Session session, Object a, Object b)

Implements abstract org.hsqldb.types.Type.compare.

public Object
public Object
public Object
public Object
convertToDefaultType(SessionInterface session, Object a)

Implements abstract org.hsqldb.types.Type.convertToDefaultType.

Converts the object to the given type without limit checks.

public void
public String
public String
public Object
convertToType(SessionInterface session, Object a, Type otherType)

Implements abstract org.hsqldb.types.Type.convertToType.

Same as castToType except for CHARACTER values.

public Object
public int
public Type
getAggregateType(Type other)

Implements abstract org.hsqldb.types.Type.getAggregateType.

Common type used in comparison operations.

public static BinaryType
getBinaryType(int type, long precision)

public Type
getCombinedType(Session session, Type other, int operation)

Implements abstract org.hsqldb.types.Type.getCombinedType.

Returns type for concat

public String
getDefinition()

Implements abstract org.hsqldb.types.Type.getDefinition.

Returns the full definition of the type, including parameters

public Class<T>
public String
getJDBCClassName()

Implements abstract org.hsqldb.types.Type.getJDBCClassName.

Returns the JDBC class name of type, if it exists, otherwise the HSQLDB class name.

public int
getJDBCTypeCode()

Implements abstract org.hsqldb.types.Type.getJDBCTypeCode.

Returns the JDBC type number of type, if it exists, otherwise the HSQLDB / SQL type.

public long
public String
public String
getNameString()

Implements abstract org.hsqldb.types.Type.getNameString.

Returns the name of the type

pack-priv int
public boolean
public BlobData
overlay(Session session, BlobData data, BlobData overlay, long offset, long length, boolean hasLength)

public long
position(SessionInterface session, BlobData data, BlobData otherData, Type otherType, long offset)

public int
precedenceDegree(Type other)

Overrides org.hsqldb.types.Type.precedenceDegree.

relaxes the SQL standard list to avoid problems with conversion of literals and java method parameter type issues

public boolean
public BlobData
substring(SessionInterface session, BlobData data, long offset, long length, boolean hasLength)

public BlobData
trim(Session session, BlobData data, int trim, boolean leading, boolean trailing)

Inherited from org.hsqldb.types.Type:
absoluteacceptsFractionalPrecisionacceptsScaleaddarrayLimitCardinalitycanBeAssignedFromcanCompareDirectcardinalitycollectionBaseTypecomparecomparecompareToTypeRangecompileconvertToJSONconvertToTypeJDBCdivideduplicateequalsgetAggregateTypegetCatalogNamegetChangeTimestampgetCharacterSetgetCollationgetComponentsgetDefaultArrayTypegetDefaultTypegetDefaultTypeWithSizegetDegreegetFullNameStringgetHSQLDBTypeCodegetJDBCPrecisiongetJDBCScalegetJDBCTypeCodegetMaxScalegetNamegetOwnergetPrecisionRadixgetReferencesgetSchemaNamegetSQLgetSQLGenericTypeCodegetTypegetTypegetTypegetTypeDefinitiongetTypeForJDBCConvertTokengetTypeNrhashCodehashCodeisArrayTypeisBitTypeisBooleanTypeisCharacterTypeisDateOrTimestampTypeisDateTimeTypeisDateTimeTypeWithZoneisDecimalTypeisDistinctTypeisDomainTypeisExactNumberTypeisIntegralTypeisIntervalDaySecondTypeisIntervalTypeisIntervalYearMonthTypeisLobTypeisMultisetTypeisNegativeisNumberTypeisObjectTypeisRowTypeisStructuredTypeisSupportedSQLTypeisTimestampTypeisTimeTypeisUUIDTypematchesmultiplynegatesubtract

Field Detail

maxBinaryPrecisionback to summary
public static final long maxBinaryPrecision

Constructor Detail

BinaryTypeback to summary
protected BinaryType(int type, long precision)

Method Detail

acceptsPrecisionback to summary
public boolean acceptsPrecision()

Overrides org.hsqldb.types.Type.acceptsPrecision.

canConvertFromback to summary
public boolean canConvertFrom(Type otherType)

Implements abstract org.hsqldb.types.Type.canConvertFrom.

canMoveFromback to summary
public int canMoveFrom(Type otherType)

Overrides org.hsqldb.types.Type.canMoveFrom.

Doc from org.hsqldb.types.Type.canMoveFrom.

When canConvertFrom() is true, can convert without changing the object

castOrConvertToTypeback to summary
pack-priv Object castOrConvertToType(SessionInterface session, Object a, Type otherType, boolean cast)
castToTypeback to summary
public Object castToType(SessionInterface session, Object a, Type otherType)

Overrides org.hsqldb.types.Type.castToType.

Doc from org.hsqldb.types.Type.castToType.

Explicit casts are handled by this method. SQL standard 6.12 rules for enforcement of size, precision and scale are implemented. For CHARACTER values, it performs truncation in all cases of long strings.

compareback to summary
public int compare(Session session, Object a, Object b)

Implements abstract org.hsqldb.types.Type.compare.

concatback to summary
public Object concat(Session session, Object a, Object b)

Overrides org.hsqldb.types.Type.concat.

convertJavaToSQLback to summary
public Object convertJavaToSQL(SessionInterface session, Object a)

Overrides org.hsqldb.types.Type.convertJavaToSQL.

convertSQLToJavaback to summary
public Object convertSQLToJava(SessionInterface session, Object a)

Overrides org.hsqldb.types.Type.convertSQLToJava.

convertToDefaultTypeback to summary
public Object convertToDefaultType(SessionInterface session, Object a)

Implements abstract org.hsqldb.types.Type.convertToDefaultType.

Doc from org.hsqldb.types.Type.convertToDefaultType.

Converts the object to the given type without limit checks. Used for JDBC writes.

convertToJSONback to summary
public void convertToJSON(Object a, StringBuilder sb)

Overrides org.hsqldb.types.Type.convertToJSON.

convertToSQLStringback to summary
public String convertToSQLString(Object a)

Implements abstract org.hsqldb.types.Type.convertToSQLString.

convertToStringback to summary
public String convertToString(Object a)

Implements abstract org.hsqldb.types.Type.convertToString.

convertToTypeback to summary
public Object convertToType(SessionInterface session, Object a, Type otherType)

Implements abstract org.hsqldb.types.Type.convertToType.

Doc from org.hsqldb.types.Type.convertToType.

Same as castToType except for CHARACTER values. Perform string truncation of trailing spaces only. For other long strings, it raises an exception.

convertToTypeLimitsback to summary
public Object convertToTypeLimits(SessionInterface session, Object a)

Implements abstract org.hsqldb.types.Type.convertToTypeLimits.

displaySizeback to summary
public int displaySize()

Implements abstract org.hsqldb.types.Type.displaySize.

getAggregateTypeback to summary
public Type getAggregateType(Type other)

Implements abstract org.hsqldb.types.Type.getAggregateType.

Doc from org.hsqldb.types.Type.getAggregateType.

Common type used in comparison operations. other must be comparable with this.

getBinaryTypeback to summary
public static BinaryType getBinaryType(int type, long precision)
getCombinedTypeback to summary
public Type getCombinedType(Session session, Type other, int operation)

Implements abstract org.hsqldb.types.Type.getCombinedType.

Returns type for concat

getDefinitionback to summary
public String getDefinition()

Implements abstract org.hsqldb.types.Type.getDefinition.

Doc from org.hsqldb.types.Type.getDefinition.

Returns the full definition of the type, including parameters

getJDBCClassback to summary
public Class<T> getJDBCClass()

Implements abstract org.hsqldb.types.Type.getJDBCClass.

getJDBCClassNameback to summary
public String getJDBCClassName()

Implements abstract org.hsqldb.types.Type.getJDBCClassName.

Doc from org.hsqldb.types.Type.getJDBCClassName.

Returns the JDBC class name of type, if it exists, otherwise the HSQLDB class name.

getJDBCTypeCodeback to summary
public int getJDBCTypeCode()

Implements abstract org.hsqldb.types.Type.getJDBCTypeCode.

Doc from org.hsqldb.types.Type.getJDBCTypeCode.

Returns the JDBC type number of type, if it exists, otherwise the HSQLDB / SQL type.

getMaxPrecisionback to summary
public long getMaxPrecision()

Overrides org.hsqldb.types.Type.getMaxPrecision.

getNameFullStringback to summary
public String getNameFullString()
getNameStringback to summary
public String getNameString()

Implements abstract org.hsqldb.types.Type.getNameString.

Doc from org.hsqldb.types.Type.getNameString.

Returns the name of the type

getRightTrimSizeback to summary
pack-priv int getRightTrimSize(BlobData data)
isBinaryTypeback to summary
public boolean isBinaryType()

Overrides org.hsqldb.types.Type.isBinaryType.

overlayback to summary
public BlobData overlay(Session session, BlobData data, BlobData overlay, long offset, long length, boolean hasLength)
positionback to summary
public long position(SessionInterface session, BlobData data, BlobData otherData, Type otherType, long offset)
precedenceDegreeback to summary
public int precedenceDegree(Type other)

Overrides org.hsqldb.types.Type.precedenceDegree.

relaxes the SQL standard list to avoid problems with conversion of literals and java method parameter type issues

requiresPrecisionback to summary
public boolean requiresPrecision()

Overrides org.hsqldb.types.Type.requiresPrecision.

substringback to summary
public BlobData substring(SessionInterface session, BlobData data, long offset, long length, boolean hasLength)
trimback to summary
public BlobData trim(Session session, BlobData data, int trim, boolean leading, boolean trailing)