@Override public Type createType(TypeManager typeManager, List<TypeParameter> parameters) { if (parameters.isEmpty()) { return createCharType(1); } if (parameters.size() != 1) { throw new IllegalArgumentException("Expected at most one parameter for CHAR"); } TypeParameter parameter = parameters.get(0); if (!parameter.isLongLiteral()) { throw new IllegalArgumentException("CHAR length must be a number"); } return createCharType(parameter.getLongLiteral()); } }
public static Slice padSpaces(Slice slice, CharType charType) { requireNonNull(charType, "charType is null"); return padSpaces(slice, charType.getLength()); }
public static CharType createCharType(long length) { return new CharType(length); }
private static Type getCommonSuperTypeForChar(CharType firstType, CharType secondType) { return createCharType(Math.max(firstType.getLength(), secondType.getLength())); }
public static Block createTestBlock() { BlockBuilder blockBuilder = CHAR_TYPE.createBlockBuilder(null, 15); CHAR_TYPE.writeString(blockBuilder, "apple"); CHAR_TYPE.writeString(blockBuilder, "apple"); CHAR_TYPE.writeString(blockBuilder, "apple"); CHAR_TYPE.writeString(blockBuilder, "banana"); CHAR_TYPE.writeString(blockBuilder, "banana"); CHAR_TYPE.writeString(blockBuilder, "banana"); CHAR_TYPE.writeString(blockBuilder, "banana"); CHAR_TYPE.writeString(blockBuilder, "banana"); CHAR_TYPE.writeString(blockBuilder, "cherry"); CHAR_TYPE.writeString(blockBuilder, "cherry"); CHAR_TYPE.writeString(blockBuilder, "date"); return blockBuilder.build(); }
private static Type getCommonSuperTypeForChar(CharType firstType, CharType secondType) { return createCharType(Math.max(firstType.getLength(), secondType.getLength())); }
public static Block createTestBlock() { BlockBuilder blockBuilder = CHAR_TYPE.createBlockBuilder(null, 15); CHAR_TYPE.writeString(blockBuilder, "apple"); CHAR_TYPE.writeString(blockBuilder, "apple"); CHAR_TYPE.writeString(blockBuilder, "apple"); CHAR_TYPE.writeString(blockBuilder, "banana"); CHAR_TYPE.writeString(blockBuilder, "banana"); CHAR_TYPE.writeString(blockBuilder, "banana"); CHAR_TYPE.writeString(blockBuilder, "banana"); CHAR_TYPE.writeString(blockBuilder, "banana"); CHAR_TYPE.writeString(blockBuilder, "cherry"); CHAR_TYPE.writeString(blockBuilder, "cherry"); CHAR_TYPE.writeString(blockBuilder, "date"); return blockBuilder.build(); }
@Override public Type createType(TypeManager typeManager, List<TypeParameter> parameters) { if (parameters.isEmpty()) { return createCharType(1); } if (parameters.size() != 1) { throw new IllegalArgumentException("Expected at most one parameter for CHAR"); } TypeParameter parameter = parameters.get(0); if (!parameter.isLongLiteral()) { throw new IllegalArgumentException("CHAR length must be a number"); } return createCharType(parameter.getLongLiteral()); } }
public static Slice truncateToLengthAndTrimSpaces(Slice slice, CharType charType) { requireNonNull(charType, "charType is null"); return truncateToLengthAndTrimSpaces(slice, charType.getLength()); }
return Optional.of(createVarcharType(0)); case StandardTypes.CHAR: return Optional.of(createCharType(0)); case StandardTypes.DECIMAL: return Optional.of(createDecimalType(1, 0)); return Optional.of(CharType.createCharType(CharType.MAX_LENGTH)); return Optional.of(createCharType(Math.min(CharType.MAX_LENGTH, varcharType.getBoundedLength()))); case JoniRegexpType.NAME: return Optional.of(JONI_REGEXP); return Optional.of(createVarcharType(charType.getLength())); case JoniRegexpType.NAME: return Optional.of(JONI_REGEXP);
@Override protected Type visitCharLiteral(CharLiteral node, StackableAstVisitorContext<Context> context) { CharType type = CharType.createCharType(node.getValue().length()); return setExpressionType(node, type); }
private static Integer charOctetLength(Type type) { if (isVarcharType(type)) { return ((VarcharType) type).getLength().orElse(VarcharType.UNBOUNDED_LENGTH); } if (isCharType(type)) { return ((CharType) type).getLength(); } if (type.equals(VARBINARY)) { return Integer.MAX_VALUE; } return null; }
return Optional.of(createVarcharType(0)); case StandardTypes.CHAR: return Optional.of(createCharType(0)); case StandardTypes.DECIMAL: return Optional.of(createDecimalType(1, 0)); return Optional.of(CharType.createCharType(CharType.MAX_LENGTH)); return Optional.of(createCharType(Math.min(CharType.MAX_LENGTH, varcharType.getLengthSafe()))); case JoniRegexpType.NAME: return Optional.of(JONI_REGEXP); return Optional.of(createVarcharType(charType.getLength())); case JoniRegexpType.NAME: return Optional.of(JONI_REGEXP);
@Override protected Type visitCharLiteral(CharLiteral node, StackableAstVisitorContext<Context> context) { CharType type = CharType.createCharType(node.getValue().length()); return setExpressionType(node, type); }
private static Integer charOctetLength(Type type) { if (isVarcharType(type)) { return ((VarcharType) type).getLength(); } if (isCharType(type)) { return ((CharType) type).getLength(); } if (type.equals(VARBINARY)) { return Integer.MAX_VALUE; } return null; }
public static DataType<String> charDataType(String insertType, int length) { return dataType(insertType, createCharType(length), DataType::quote, input -> padEnd(input, length, ' ')); }
public static Slice charPartitionKey(String value, String name, Type columnType) { Slice partitionKey = trimTrailingSpaces(Slices.utf8Slice(value)); CharType charType = (CharType) columnType; if (SliceUtf8.countCodePoints(partitionKey) > charType.getLength()) { throw new PrestoException(HIVE_INVALID_PARTITION_VALUE, format("Invalid partition value '%s' for %s partition key: %s", value, columnType.toString(), name)); } return partitionKey; }
@Override protected RowExpression visitCharLiteral(CharLiteral node, Void context) { return constant(node.getSlice(), createCharType(node.getValue().length())); }
return ((CharType) type).getLength();
@Override protected RowExpression visitCharLiteral(CharLiteral node, Void context) { return constant(node.getSlice(), createCharType(node.getValue().length())); }