/** * Constructs a type with no parameters. This should only be called from a * factory method. * * @param typeSystem Type system * @param typeName Type name */ public BasicSqlType(RelDataTypeSystem typeSystem, SqlTypeName typeName) { this(typeSystem, typeName, false, PRECISION_NOT_SPECIFIED, SCALE_NOT_SPECIFIED, null, null); checkPrecScale(typeName, false, false); }
/** * Constructs a type with precision/length but no scale. * * @param typeSystem Type system * @param typeName Type name * @param precision Precision (called length for some types) */ public BasicSqlType(RelDataTypeSystem typeSystem, SqlTypeName typeName, int precision) { this(typeSystem, typeName, false, precision, SCALE_NOT_SPECIFIED, null, null); checkPrecScale(typeName, true, false); }
/** Internal constructor. */ private BasicSqlType( RelDataTypeSystem typeSystem, SqlTypeName typeName, boolean nullable, int precision, int scale, SqlCollation collation, SerializableCharset wrappedCharset) { super(typeName, nullable, null); this.typeSystem = Objects.requireNonNull(typeSystem); this.precision = precision; this.scale = scale; this.collation = collation; this.wrappedCharset = wrappedCharset; computeDigest(); }