Package org.apache.calcite.sql.type
Class BasicSqlType
java.lang.Object
org.apache.calcite.rel.type.RelDataTypeImpl
org.apache.calcite.sql.type.AbstractSqlType
org.apache.calcite.sql.type.BasicSqlType
- All Implemented Interfaces:
Serializable,Cloneable,RelDataType,RelDataTypeFamily
BasicSqlType represents a standard atomic SQL type (excluding interval
types).
Instances of this class are immutable.
- See Also:
-
Field Summary
FieldsFields inherited from class org.apache.calcite.sql.type.AbstractSqlType
isNullable, typeNameFields inherited from class org.apache.calcite.rel.type.RelDataTypeImpl
digest, fieldList, NON_NULLABLE_SUFFIXFields inherited from interface org.apache.calcite.rel.type.RelDataType
PRECISION_NOT_SPECIFIED, SCALE_NOT_SPECIFIED -
Constructor Summary
ConstructorsModifierConstructorDescriptionBasicSqlType(RelDataTypeSystem typeSystem, SqlTypeName typeName) Constructs a type with no parameters.protectedBasicSqlType(RelDataTypeSystem typeSystem, SqlTypeName typeName, boolean nullable) BasicSqlType(RelDataTypeSystem typeSystem, SqlTypeName typeName, int precision) Constructs a type with precision/length but no scale.BasicSqlType(RelDataTypeSystem typeSystem, SqlTypeName typeName, int precision, int scale) Constructs a type with precision/length and scale. -
Method Summary
Modifier and TypeMethodDescriptionprotected static voidcheckPrecScale(SqlTypeName typeName, boolean precisionSpecified, boolean scaleSpecified) Throws iftypeNamedoes not allow the given combination of precision and scale.createWithNullability(boolean nullable) Constructs a type with nullablity.protected voidgenerateTypeString(StringBuilder sb, boolean withDetail) Generates a string representation of this type.@Nullable CharsetGets this type's character set, or null if this type cannot carry a character set or has no character set defined.@Nullable SqlCollationGets this type's collation, or null if this type cannot carry a collation or has no collation defined.@Nullable ObjectgetLimit(boolean sign, SqlTypeName.Limit limit, boolean beyond) Returns a value which is a limit for this type.intGets the JDBC-defined precision for values of this type.intgetScale()Gets the scale of this type.Methods inherited from class org.apache.calcite.sql.type.AbstractSqlType
getFamily, getPrecedenceList, getSqlTypeName, isNullableMethods inherited from class org.apache.calcite.rel.type.RelDataTypeImpl
computeDigest, equals, extra, getComparability, getComponentType, getField, getFieldCount, getFieldList, getFieldMap, getFieldNames, getFullTypeString, getIntervalQualifier, getKeyType, getSqlIdentifier, getStructKind, getValueType, hashCode, isDynamicStruct, isStruct, proto, proto, proto, proto, toStringMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.calcite.rel.type.RelDataType
equalsSansFieldNames, equalsSansFieldNamesAndNullability, getMeasureElementType, isMeasure
-
Field Details
-
typeSystem
-
-
Constructor Details
-
BasicSqlType
Constructs a type with no parameters. This should only be called from a factory method.- Parameters:
typeSystem- Type systemtypeName- Type name
-
BasicSqlType
-
BasicSqlType
Constructs a type with precision/length but no scale.- Parameters:
typeSystem- Type systemtypeName- Type nameprecision- Precision (called length for some types)
-
BasicSqlType
Constructs a type with precision/length and scale.- Parameters:
typeSystem- Type systemtypeName- Type nameprecision- Precision (called length for some types)scale- Scale
-
-
Method Details
-
checkPrecScale
protected static void checkPrecScale(SqlTypeName typeName, boolean precisionSpecified, boolean scaleSpecified) Throws iftypeNamedoes not allow the given combination of precision and scale. -
createWithNullability
Constructs a type with nullablity. -
getPrecision
public int getPrecision()Description copied from interface:RelDataTypeGets the JDBC-defined precision for values of this type. Note that this is not always the same as the user-specified precision. For example, the type INTEGER has no user-specified precision, but this method returns 10 for an INTEGER type.Returns
RelDataType.PRECISION_NOT_SPECIFIED(-1) if precision is not applicable for this type.- Specified by:
getPrecisionin interfaceRelDataType- Overrides:
getPrecisionin classRelDataTypeImpl- Returns:
- number of decimal digits for exact numeric types; number of decimal digits in mantissa for approximate numeric types; number of decimal digits for fractional seconds of datetime types; length in characters for character types; length in bytes for binary types; length in bits for bit types; 1 for BOOLEAN; -1 if precision is not valid for this type
-
getScale
public int getScale()Description copied from interface:RelDataTypeGets the scale of this type. ReturnsRelDataType.SCALE_NOT_SPECIFIED(-1) if scale is not valid for this type.- Specified by:
getScalein interfaceRelDataType- Overrides:
getScalein classRelDataTypeImpl- Returns:
- number of digits of scale
-
getCharset
Description copied from interface:RelDataTypeGets this type's character set, or null if this type cannot carry a character set or has no character set defined.- Specified by:
getCharsetin interfaceRelDataType- Overrides:
getCharsetin classRelDataTypeImpl- Returns:
- charset of type
-
getCollation
Description copied from interface:RelDataTypeGets this type's collation, or null if this type cannot carry a collation or has no collation defined.- Specified by:
getCollationin interfaceRelDataType- Overrides:
getCollationin classRelDataTypeImpl- Returns:
- collation of type
-
generateTypeString
Description copied from class:RelDataTypeImplGenerates a string representation of this type.- Specified by:
generateTypeStringin classRelDataTypeImpl- Parameters:
sb- StringBuilder into which to generate the stringwithDetail- when true, all detail information needed to compute a unique digest (and return from getFullTypeString) should be included;
-
getLimit
Returns a value which is a limit for this type.For example,
Limits Datatype sign limit beyond precision scale Returns Integer true true false -1 -1 2147483647 (2 ^ 31 -1 = MAXINT) Integer true true true -1 -1 2147483648 (2 ^ 31 = MAXINT + 1) Integer false true false -1 -1 -2147483648 (-2 ^ 31 = MININT) Boolean true true false -1 -1 TRUE Varchar true true false 10 -1 'ZZZZZZZZZZ' - Parameters:
sign- If true, returns upper limit, otherwise lower limitlimit- If true, returns value at or near to overflow; otherwise value at or near to underflowbeyond- If true, returns the value just beyond the limit, otherwise the value at the limit- Returns:
- Limit value
-