private RelDataType getRelDataType(PrimitiveTypeInfo pTypeInfo, SqlTypeName typeName) { int maxLen = TypeInfoUtils.getCharacterLengthForType(pTypeInfo); RelDataType relDataType = typeFactory.createSqlType(typeName, maxLen); return typeFactory.createTypeWithCharsetAndCollation(relDataType, Util.getDefaultCharset(), SqlCollation.IMPLICIT); }
/** * Like RelDataTypeFactory.createSqlTypeWithNullability, but creates types that align best with how Druid * represents them. */ public static RelDataType createSqlTypeWithNullability( final RelDataTypeFactory typeFactory, final SqlTypeName typeName, final boolean nullable ) { final RelDataType dataType; switch (typeName) { case TIMESTAMP: // Our timestamps are down to the millisecond (precision = 3). dataType = typeFactory.createSqlType(typeName, 3); break; case CHAR: case VARCHAR: dataType = typeFactory.createTypeWithCharsetAndCollation( typeFactory.createSqlType(typeName), Calcites.defaultCharset(), SqlCollation.IMPLICIT ); break; default: dataType = typeFactory.createSqlType(typeName); } return typeFactory.createTypeWithNullability(dataType, nullable); }
break; case STRING: convertedType = dtFactory.createTypeWithCharsetAndCollation( dtFactory.createSqlType(SqlTypeName.VARCHAR, Integer.MAX_VALUE), Charset.forName(ConversionUtil.NATIVE_UTF16_CHARSET_NAME), SqlCollation.IMPLICIT); break; case VARCHAR: convertedType = dtFactory.createTypeWithCharsetAndCollation( dtFactory.createSqlType(SqlTypeName.VARCHAR, ((BaseCharTypeInfo) type).getLength()), Charset.forName(ConversionUtil.NATIVE_UTF16_CHARSET_NAME), SqlCollation.IMPLICIT); break; case CHAR: convertedType = dtFactory.createTypeWithCharsetAndCollation( dtFactory.createSqlType(SqlTypeName.CHAR, ((BaseCharTypeInfo) type).getLength()), Charset.forName(ConversionUtil.NATIVE_UTF16_CHARSET_NAME), SqlCollation.IMPLICIT);
break; case STRING: convertedType = dtFactory.createTypeWithCharsetAndCollation( dtFactory.createSqlType(SqlTypeName.VARCHAR, Integer.MAX_VALUE), Charset.forName(ConversionUtil.NATIVE_UTF16_CHARSET_NAME), SqlCollation.IMPLICIT); break; case VARCHAR: convertedType = dtFactory.createTypeWithCharsetAndCollation( dtFactory.createSqlType(SqlTypeName.VARCHAR, ((BaseCharTypeInfo) type).getLength()), Charset.forName(ConversionUtil.NATIVE_UTF16_CHARSET_NAME), SqlCollation.IMPLICIT); break; case CHAR: convertedType = dtFactory.createTypeWithCharsetAndCollation( dtFactory.createSqlType(SqlTypeName.CHAR, ((BaseCharTypeInfo) type).getLength()), Charset.forName(ConversionUtil.NATIVE_UTF16_CHARSET_NAME), SqlCollation.IMPLICIT);
if (SqlTypeUtil.inCharFamily(inferredType)) { newInferredType = typeFactory.createTypeWithCharsetAndCollation( newInferredType, inferredType.getCharset(),
str.getValue().length()); type = typeFactory.createTypeWithCharsetAndCollation( type, charset,
str.getValue().length()); type = typeFactory.createTypeWithCharsetAndCollation( type, charset,
typeFactory.createTypeWithCharsetAndCollation( type, charset,
typeFactory.createTypeWithCharsetAndCollation( type, charset,
/** * Like RelDataTypeFactory.createSqlTypeWithNullability, but creates types that align best with how Druid * represents them. */ public static RelDataType createSqlTypeWithNullability( final RelDataTypeFactory typeFactory, final SqlTypeName typeName, final boolean nullable ) { final RelDataType dataType; switch (typeName) { case TIMESTAMP: // Our timestamps are down to the millisecond (precision = 3). dataType = typeFactory.createSqlType(typeName, 3); break; case CHAR: case VARCHAR: dataType = typeFactory.createTypeWithCharsetAndCollation( typeFactory.createSqlType(typeName), Calcites.defaultCharset(), SqlCollation.IMPLICIT ); break; default: dataType = typeFactory.createSqlType(typeName); } return typeFactory.createTypeWithNullability(dataType, nullable); }
typeFactory.createTypeWithCharsetAndCollation( type, charset,
protected RelDataType adjustType( SqlValidator validator, SqlCall call, RelDataType type) { if (SqlTypeUtil.inCharFamily(type)) { // Determine coercibility and resulting collation name of // unary operator if needed. RelDataType operandType = validator.getValidatedNodeType(call.operand(0)); if (null == operandType) { throw new AssertionError("operand's type should have been derived"); } if (SqlTypeUtil.inCharFamily(operandType)) { SqlCollation collation = operandType.getCollation(); assert null != collation : "An implicit or explicit collation should have been set"; type = validator.getTypeFactory() .createTypeWithCharsetAndCollation( type, type.getCharset(), new SqlCollation( collation.getCollationName(), collation.getCoercibility())); } } return type; }
protected RelDataType adjustType( SqlValidator validator, SqlCall call, RelDataType type) { if (SqlTypeUtil.inCharFamily(type)) { // Determine coercibility and resulting collation name of // unary operator if needed. RelDataType operandType = validator.getValidatedNodeType(call.operand(0)); if (null == operandType) { throw new AssertionError("operand's type should have been derived"); } if (SqlTypeUtil.inCharFamily(operandType)) { SqlCollation collation = operandType.getCollation(); assert null != collation : "An implicit or explicit collation should have been set"; type = validator.getTypeFactory() .createTypeWithCharsetAndCollation( type, type.getCharset(), new SqlCollation( collation.getCollationName(), collation.getCoercibility())); } } return type; }
protected RelDataType adjustType( SqlValidator validator, SqlCall call, RelDataType type) { if (SqlTypeUtil.inCharFamily(type)) { // Determine coercibility and resulting collation name of // unary operator if needed. RelDataType operandType = validator.getValidatedNodeType(call.operand(0)); if (null == operandType) { throw new AssertionError("operand's type should have been derived"); } if (SqlTypeUtil.inCharFamily(operandType)) { SqlCollation collation = operandType.getCollation(); assert null != collation : "An implicit or explicit collation should have been set"; type = validator.getTypeFactory() .createTypeWithCharsetAndCollation( type, type.getCharset(), new SqlCollation( collation.getCollationName(), collation.getCoercibility())); } } return type; }
protected RelDataType adjustType( SqlValidator validator, SqlCall call, RelDataType type) { if (SqlTypeUtil.inCharFamily(type)) { // Determine coercibility and resulting collation name of // unary operator if needed. RelDataType operandType = validator.getValidatedNodeType(call.operand(0)); if (null == operandType) { throw new AssertionError("operand's type should have been derived"); } if (SqlTypeUtil.inCharFamily(operandType)) { SqlCollation collation = operandType.getCollation(); assert null != collation : "An implicit or explicit collation should have been set"; type = validator.getTypeFactory() .createTypeWithCharsetAndCollation( type, type.getCharset(), new SqlCollation( collation.getCollationName(), collation.getCoercibility())); } } return type; }
type = validator.getTypeFactory() .createTypeWithCharsetAndCollation( type, type.getCharset(),
type = validator.getTypeFactory() .createTypeWithCharsetAndCollation( type, type.getCharset(),
type = validator.getTypeFactory() .createTypeWithCharsetAndCollation( type, type.getCharset(),
public RelDataType transformType( SqlOperatorBinding opBinding, RelDataType typeToTransform) { switch (typeToTransform.getSqlTypeName()) { case VARCHAR: case VARBINARY: return typeToTransform; } SqlTypeName retTypeName = toVar(typeToTransform); RelDataType ret = opBinding.getTypeFactory().createSqlType( retTypeName, typeToTransform.getPrecision()); if (SqlTypeUtil.inCharFamily(typeToTransform)) { ret = opBinding.getTypeFactory() .createTypeWithCharsetAndCollation( ret, typeToTransform.getCharset(), typeToTransform.getCollation()); } return opBinding.getTypeFactory().createTypeWithNullability( ret, typeToTransform.isNullable()); }
public RelDataType transformType( SqlOperatorBinding opBinding, RelDataType typeToTransform) { switch (typeToTransform.getSqlTypeName()) { case VARCHAR: case VARBINARY: return typeToTransform; } SqlTypeName retTypeName = toVar(typeToTransform); RelDataType ret = opBinding.getTypeFactory().createSqlType( retTypeName, typeToTransform.getPrecision()); if (SqlTypeUtil.inCharFamily(typeToTransform)) { ret = opBinding.getTypeFactory() .createTypeWithCharsetAndCollation( ret, typeToTransform.getCharset(), typeToTransform.getCollation()); } return opBinding.getTypeFactory().createTypeWithNullability( ret, typeToTransform.isNullable()); }