Class NumberType
- java.lang.Object
-
- org.hsqldb.types.Type
-
- org.hsqldb.types.NumberType
-
- All Implemented Interfaces:
- java.lang.Cloneable, SchemaObject
public final class NumberType extends Type
Type subclass for all NUMBER types.- Since:
- 1.9.0
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.hsqldb.types.Type
Type.TypedComparator
-
Nested classes/interfaces inherited from interface org.hsqldb.SchemaObject
SchemaObject.ConstraintTypes, SchemaObject.Deferable, SchemaObject.Nullability, SchemaObject.ParameterModes, SchemaObject.ReferentialAction, SchemaObject.ViewCheckModes
-
-
Field Summary
Fields Modifier and Type Field and Description static intBIGINT_WIDTHstatic intDECIMAL_WIDTHstatic intdefaultNumericPrecisionstatic intdefaultNumericScalestatic intDOUBLE_WIDTHstatic intINTEGER_WIDTHstatic java.math.BigDecimalMAX_DOUBLEstatic java.math.BigDecimalMAX_INTstatic java.math.BigDecimalMAX_LONGstatic java.math.BigIntegerMAX_LONG_BIstatic intmaxNumericPrecisionstatic java.math.BigDecimalMIN_INTstatic java.math.BigDecimalMIN_LONGstatic java.math.BigIntegerMIN_LONG_BIstatic intSMALLINT_WIDTHstatic TypeSQL_NUMERIC_DEFAULT_INTstatic intTINYINT_WIDTH-
Fields inherited from class org.hsqldb.types.Type
emptyArray, jdbcConvertTypes, OTHER, precision, scale, SQL_ALL_TYPES, SQL_ARRAY_ALL_TYPES, SQL_BIGINT, SQL_BINARY, SQL_BINARY_16, SQL_BINARY_DEFAULT, SQL_BIT, SQL_BIT_VARYING, SQL_BIT_VARYING_MAX_LENGTH, SQL_BLOB, SQL_BOOLEAN, SQL_CHAR, SQL_CHAR_16, SQL_CHAR_DEFAULT, SQL_CLOB, SQL_DATE, SQL_DECIMAL, SQL_DECIMAL_BIGINT_SQR, SQL_DECIMAL_DEFAULT, SQL_DOUBLE, SQL_INTEGER, SQL_INTERVAL_DAY, SQL_INTERVAL_DAY_MAX_PRECISION, SQL_INTERVAL_DAY_TO_HOUR, SQL_INTERVAL_DAY_TO_MINUTE, SQL_INTERVAL_DAY_TO_SECOND, SQL_INTERVAL_DAY_TO_SECOND_MAX_PRECISION, SQL_INTERVAL_HOUR, SQL_INTERVAL_HOUR_MAX_PRECISION, SQL_INTERVAL_HOUR_TO_MINUTE, SQL_INTERVAL_HOUR_TO_SECOND, SQL_INTERVAL_MINUTE, SQL_INTERVAL_MINUTE_MAX_PRECISION, SQL_INTERVAL_MINUTE_TO_SECOND, SQL_INTERVAL_MONTH, SQL_INTERVAL_MONTH_MAX_PRECISION, SQL_INTERVAL_SECOND, SQL_INTERVAL_SECOND_MAX_FRACTION, SQL_INTERVAL_SECOND_MAX_FRACTION_MAX_PRECISION, SQL_INTERVAL_SECOND_MAX_PRECISION, SQL_INTERVAL_YEAR, SQL_INTERVAL_YEAR_MAX_PRECISION, SQL_INTERVAL_YEAR_TO_MONTH, SQL_INTERVAL_YEAR_TO_MONTH_MAX_PRECISION, SQL_NUMERIC, SQL_SMALLINT, SQL_TIME, SQL_TIME_WITH_TIME_ZONE, SQL_TIMESTAMP, SQL_TIMESTAMP_NO_FRACTION, SQL_TIMESTAMP_WITH_TIME_ZONE, SQL_VARBINARY, SQL_VARBINARY_DEFAULT, SQL_VARCHAR, SQL_VARCHAR_DEFAULT, TINYINT, typeAliases, typeCode, typeComparisonGroup, typeDataGroup, typeNames, userTypeModifier
-
Fields inherited from interface org.hsqldb.SchemaObject
ASSERTION, CATALOG, CHARSET, COLLATION, COLUMN, CONSTRAINT, CURSOR, DOMAIN, FUNCTION, GRANTEE, INDEX, LABEL, PARAMETER, PROCEDURE, ROUTINE, SCHEMA, SEARCH, SEQUENCE, SERVER, SPECIFIC_ROUTINE, SUBQUERY, TABLE, TRANSITION, TRIGGER, TYPE, VARIABLE, VIEW, WRAPPER
-
-
Constructor Summary
Constructors Constructor and Description NumberType(int type, long precision, int scale)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method and Description java.lang.Objectabsolute(java.lang.Object a)All arithmetic ops are called on the pre-determined Type object of the resultbooleanacceptsPrecision()booleanacceptsScale()java.lang.Objectadd(Session session, java.lang.Object a, java.lang.Object b, Type otherType)booleancanConvertFrom(Type otherType)intcanMoveFrom(Type otherType)Can convert without changing the objectjava.lang.Objectceiling(java.lang.Object a)intcompare(Session session, java.lang.Object a, java.lang.Object b)intcompareToTypeRange(java.lang.Object o)intcompareToZero(java.lang.Object a)java.lang.ObjectconvertJavaToSQL(SessionInterface session, java.lang.Object a)java.lang.ObjectconvertToDefaultType(SessionInterface session, java.lang.Object a)Relaxes SQL parameter type enforcement for DECIMAL, allowing long values.java.lang.StringconvertToSQLString(java.lang.Object a)java.lang.StringconvertToString(java.lang.Object a)java.lang.ObjectconvertToType(SessionInterface session, java.lang.Object a, Type otherType)Same as castToType except for CHARACTER values.java.lang.ObjectconvertToTypeJDBC(SessionInterface session, java.lang.Object a, Type otherType)Convert type for JDBC reads.java.lang.ObjectconvertToTypeLimits(SessionInterface session, java.lang.Object a)intdisplaySize()java.lang.Objectdivide(Session session, java.lang.Object a, java.lang.Object b)java.lang.Objectfloor(java.lang.Object a)TypegetAggregateType(Type other)Common type used in comparison opertions.TypegetCombinedType(Session session, Type other, int operation)Returns a SQL type "wide" enough to represent the result of the expression.
A type is "wider" than the other if it can represent all its numeric values.
Arithmetic operation terms are promoted to a type that can represent the resulting values and avoid incorrect results.intgetDecimalPrecision()Returns decimal precision.java.lang.StringgetDefinition()Returns the full definition of the type, including parametersjava.lang.StringgetFullNameString()Returns the name of the typeTypegetIntegralType()java.lang.ClassgetJDBCClass()java.lang.StringgetJDBCClassName()Returns the JDBC class name of type, if it exists, otherwise the HSQLDB class name.intgetJDBCPrecision()intgetJDBCTypeCode()Returns the JDBC type number of type, if it exists, otherwise the HSQLDB / SQL type.longgetMaxPrecision()intgetMaxScale()java.lang.StringgetNameString()Returns the name of the typeintgetNominalWidth()static NumberTypegetNumberType(int type, long precision, int scale)intgetNumericPrecisionInRadix()intgetPrecision()Returns decimal precision for NUMERIC/DECIMAL.intgetPrecisionRadix()booleanisDecimalType()booleanisExactNumberType()static booleanisInLongLimits(java.math.BigDecimal result)static booleanisInLongLimits(java.math.BigInteger result)booleanisIntegralType()booleanisNegative(java.lang.Object a)booleanisNumberType()static booleanisZero(java.lang.Object a)java.lang.Objectmodulo(Session session, java.lang.Object a, java.lang.Object b, Type otherType)java.lang.Objectmultiply(java.lang.Object a, java.lang.Object b)java.lang.Objectnegate(java.lang.Object a)intprecedenceDegree(Type other)java.lang.Objectround(java.lang.Object a, int s)static longscaledDecimal(java.lang.Object a, int scale)java.lang.Objectsubtract(Session session, java.lang.Object a, java.lang.Object b, Type otherType)static doubletoDouble(java.lang.Object a)java.lang.Objecttruncate(java.lang.Object a, int s)-
Methods inherited from class org.hsqldb.types.Type
acceptsFractionalPrecision, arrayLimitCardinality, canBeAssignedFrom, cardinality, castToType, collectionBaseType, compare, compare, compile, concat, convertSQLToJava, duplicate, equals, getAggregateType, getCatalogName, getChangeTimestamp, getCharacterSet, getCollation, getComponents, getDefaultArrayType, getDefaultType, getDefaultTypeWithSize, getHSQLDBTypeCode, getJDBCScale, getJDBCTypeCode, getName, getOwner, getReferences, getSchemaName, getSQL, getSQLGenericTypeCode, getType, getType, getType, getTypeDefinition, getTypeForJDBCConvertToken, getTypeNr, hashCode, isArrayType, isBinaryType, isBitType, isBooleanType, isCharacterType, isDateOrTimestampType, isDateTimeType, isDateTimeTypeWithZone, isDistinctType, isDomainType, isIntervalType, isLobType, isMultisetType, isObjectType, isRowType, isStructuredType, isSupportedSQLType, matches, newComparator, requiresPrecision
-
-
-
-
Field Detail
-
defaultNumericPrecision
public static final int defaultNumericPrecision
- See Also:
- Constant Field Values
-
defaultNumericScale
public static final int defaultNumericScale
- See Also:
- Constant Field Values
-
maxNumericPrecision
public static final int maxNumericPrecision
- See Also:
- Constant Field Values
-
TINYINT_WIDTH
public static final int TINYINT_WIDTH
- See Also:
- Constant Field Values
-
SMALLINT_WIDTH
public static final int SMALLINT_WIDTH
- See Also:
- Constant Field Values
-
INTEGER_WIDTH
public static final int INTEGER_WIDTH
- See Also:
- Constant Field Values
-
BIGINT_WIDTH
public static final int BIGINT_WIDTH
- See Also:
- Constant Field Values
-
DOUBLE_WIDTH
public static final int DOUBLE_WIDTH
- See Also:
- Constant Field Values
-
DECIMAL_WIDTH
public static final int DECIMAL_WIDTH
- See Also:
- Constant Field Values
-
SQL_NUMERIC_DEFAULT_INT
public static final Type SQL_NUMERIC_DEFAULT_INT
-
MAX_DOUBLE
public static final java.math.BigDecimal MAX_DOUBLE
-
MAX_LONG
public static final java.math.BigDecimal MAX_LONG
-
MIN_LONG
public static final java.math.BigDecimal MIN_LONG
-
MAX_INT
public static final java.math.BigDecimal MAX_INT
-
MIN_INT
public static final java.math.BigDecimal MIN_INT
-
MIN_LONG_BI
public static final java.math.BigInteger MIN_LONG_BI
-
MAX_LONG_BI
public static final java.math.BigInteger MAX_LONG_BI
-
-
Method Detail
-
getPrecision
public int getPrecision()
Returns decimal precision for NUMERIC/DECIMAL. Returns binary precision for other parts.
-
getDecimalPrecision
public int getDecimalPrecision()
Returns decimal precision.
-
displaySize
public int displaySize()
- Specified by:
displaySizein classType
-
getJDBCTypeCode
public int getJDBCTypeCode()
Description copied from class:TypeReturns the JDBC type number of type, if it exists, otherwise the HSQLDB / SQL type.- Specified by:
getJDBCTypeCodein classType
-
getJDBCClass
public java.lang.Class getJDBCClass()
- Specified by:
getJDBCClassin classType
-
getJDBCClassName
public java.lang.String getJDBCClassName()
Description copied from class:TypeReturns the JDBC class name of type, if it exists, otherwise the HSQLDB class name.- Specified by:
getJDBCClassNamein classType
-
getJDBCPrecision
public int getJDBCPrecision()
- Overrides:
getJDBCPrecisionin classType
-
getNameString
public java.lang.String getNameString()
Description copied from class:TypeReturns the name of the type- Specified by:
getNameStringin classType
-
getFullNameString
public java.lang.String getFullNameString()
Description copied from class:TypeReturns the name of the type- Overrides:
getFullNameStringin classType
-
getDefinition
public java.lang.String getDefinition()
Description copied from class:TypeReturns the full definition of the type, including parameters- Specified by:
getDefinitionin classType
-
getMaxPrecision
public long getMaxPrecision()
- Overrides:
getMaxPrecisionin classType
-
getMaxScale
public int getMaxScale()
- Overrides:
getMaxScalein classType
-
acceptsPrecision
public boolean acceptsPrecision()
- Overrides:
acceptsPrecisionin classType
-
acceptsScale
public boolean acceptsScale()
- Overrides:
acceptsScalein classType
-
getPrecisionRadix
public int getPrecisionRadix()
- Overrides:
getPrecisionRadixin classType
-
isNumberType
public boolean isNumberType()
- Overrides:
isNumberTypein classType
-
isIntegralType
public boolean isIntegralType()
- Overrides:
isIntegralTypein classType
-
isExactNumberType
public boolean isExactNumberType()
- Overrides:
isExactNumberTypein classType
-
isDecimalType
public boolean isDecimalType()
- Overrides:
isDecimalTypein classType
-
getNominalWidth
public int getNominalWidth()
-
precedenceDegree
public int precedenceDegree(Type other)
- Overrides:
precedenceDegreein classType
-
getAggregateType
public Type getAggregateType(Type other)
Description copied from class:TypeCommon type used in comparison opertions. other must be comparable with this.- Specified by:
getAggregateTypein classType
-
getCombinedType
public Type getCombinedType(Session session, Type other, int operation)
Returns a SQL type "wide" enough to represent the result of the expression.
A type is "wider" than the other if it can represent all its numeric values.
Arithmetic operation terms are promoted to a type that can represent the resulting values and avoid incorrect results.FLOAT/REAL/DOUBLE used in an operation results in the same type, regardless of the type of the other operand. When the result or the expression is converted to the type of the target column for storage, an exception is thrown if the resulting value cannot be stored in the column
Types narrower than INTEGER (int) are promoted to INTEGER. The order of promotion is as follows
INTEGER, BIGINT, NUMERIC/DECIMAL
TINYINT and SMALLINT in any combination return INTEGER
TINYINT/SMALLINT/INTEGER and INTEGER return BIGINT
TINYINT/SMALLINT/INTEGER and BIGINT return NUMERIC/DECIMAL
BIGINT and BIGINT return NUMERIC/DECIMAL
REAL/FLOAT/DOUBLE and any type return REAL/FLOAT/DOUBLE
NUMERIC/DECIMAL any type other than REAL/FLOAT/DOUBLE returns NUMERIC/DECIMAL
In the case of NUMERIC/DECIMAL returned, the result precision is always large enough to express any value result, while the scale depends on the operation:
For ADD/SUBTRACT/DIVIDE, the scale is the larger of the two
For MULTIPLY, the scale is the sum of the two scales- Specified by:
getCombinedTypein classType
-
compare
public int compare(Session session, java.lang.Object a, java.lang.Object b)
-
convertToTypeLimits
public java.lang.Object convertToTypeLimits(SessionInterface session, java.lang.Object a)
- Specified by:
convertToTypeLimitsin classType
-
convertToType
public java.lang.Object convertToType(SessionInterface session, java.lang.Object a, Type otherType)
Description copied from class:TypeSame as castToType except for CHARACTER values. Perform string truncation of trailing spaces only. For other long strings, it raises an exception.- Specified by:
convertToTypein classType
-
convertToTypeJDBC
public java.lang.Object convertToTypeJDBC(SessionInterface session, java.lang.Object a, Type otherType)
Description copied from class:TypeConvert type for JDBC reads. Same as convertToType, but supports non-standard SQL conversions supported by JDBC- Overrides:
convertToTypeJDBCin classType
-
convertToDefaultType
public java.lang.Object convertToDefaultType(SessionInterface session, java.lang.Object a)
Relaxes SQL parameter type enforcement for DECIMAL, allowing long values.- Specified by:
convertToDefaultTypein classType
-
convertJavaToSQL
public java.lang.Object convertJavaToSQL(SessionInterface session, java.lang.Object a)
- Overrides:
convertJavaToSQLin classType
-
toDouble
public static double toDouble(java.lang.Object a)
-
convertToString
public java.lang.String convertToString(java.lang.Object a)
- Specified by:
convertToStringin classType
-
convertToSQLString
public java.lang.String convertToSQLString(java.lang.Object a)
- Specified by:
convertToSQLStringin classType
-
canConvertFrom
public boolean canConvertFrom(Type otherType)
- Specified by:
canConvertFromin classType
-
canMoveFrom
public int canMoveFrom(Type otherType)
Description copied from class:TypeCan convert without changing the object- Overrides:
canMoveFromin classType- Returns:
- 0 always, 1 range check required, -1 never
-
compareToTypeRange
public int compareToTypeRange(java.lang.Object o)
- Overrides:
compareToTypeRangein classType
-
add
public java.lang.Object add(Session session, java.lang.Object a, java.lang.Object b, Type otherType)
-
subtract
public java.lang.Object subtract(Session session, java.lang.Object a, java.lang.Object b, Type otherType)
-
multiply
public java.lang.Object multiply(java.lang.Object a, java.lang.Object b)
-
divide
public java.lang.Object divide(Session session, java.lang.Object a, java.lang.Object b)
-
modulo
public java.lang.Object modulo(Session session, java.lang.Object a, java.lang.Object b, Type otherType)
-
absolute
public java.lang.Object absolute(java.lang.Object a)
Description copied from class:TypeAll arithmetic ops are called on the pre-determined Type object of the result
-
getNumericPrecisionInRadix
public int getNumericPrecisionInRadix()
-
getIntegralType
public Type getIntegralType()
-
isZero
public static boolean isZero(java.lang.Object a)
-
isNegative
public boolean isNegative(java.lang.Object a)
-
compareToZero
public int compareToZero(java.lang.Object a)
-
scaledDecimal
public static long scaledDecimal(java.lang.Object a, int scale)
-
isInLongLimits
public static boolean isInLongLimits(java.math.BigDecimal result)
-
isInLongLimits
public static boolean isInLongLimits(java.math.BigInteger result)
-
ceiling
public java.lang.Object ceiling(java.lang.Object a)
-
floor
public java.lang.Object floor(java.lang.Object a)
-
truncate
public java.lang.Object truncate(java.lang.Object a, int s)
-
round
public java.lang.Object round(java.lang.Object a, int s)
-
getNumberType
public static NumberType getNumberType(int type, long precision, int scale)
-
-
DataMelt 3.0 © DataMelt by jWork.ORG