private static boolean isValidPartitionType(Type type) { return type instanceof DecimalType || BOOLEAN.equals(type) || TINYINT.equals(type) || SMALLINT.equals(type) || INTEGER.equals(type) || BIGINT.equals(type) || REAL.equals(type) || DOUBLE.equals(type) || DATE.equals(type) || TIMESTAMP.equals(type) || isVarcharType(type) || isCharType(type); }
private static Block serializeMap(BlockBuilder blockBuilder, Object value, Type type, String columnName) requireNonNull(blockBuilder, "parent blockBuilder is null").appendNull(); return blockBuilder.build(); List<Type> typeParameters = type.getTypeParameters(); Type keyType = typeParameters.get(0); Type valueType = typeParameters.get(1); blockBuilder = type.createBlockBuilder(null, 1); keyType.writeSlice(entryBuilder, truncateToLength(utf8Slice(entry.getKey().toString()), keyType)); serializeObject(entryBuilder, entry.getValue(), valueType, columnName);
public static Slice truncateToLength(Slice slice, int maxLength) { requireNonNull(slice, "slice is null"); if (maxLength < 0) { throw new IllegalArgumentException("Max length must be greater or equal than zero"); } if (maxLength == 0) { return Slices.EMPTY_SLICE; } return slice.slice(0, byteCount(slice, 0, slice.length(), maxLength)); }
public static Slice truncateToLength(Slice slice, Type type) { requireNonNull(type, "type is null"); if (!isVarcharType(type)) { throw new IllegalArgumentException("type must be the instance of VarcharType"); } return truncateToLength(slice, VarcharType.class.cast(type)); }
@Override public Slice getSlice() { String textValue = value.isValueNode() ? value.asText() : value.toString(); Slice slice = utf8Slice(textValue); if (isVarcharType(columnHandle.getType())) { slice = truncateToLength(slice, columnHandle.getType()); } return slice; } }
@Override protected void readValue(BlockBuilder blockBuilder, Type type) { if (definitionLevel == columnDescriptor.getMaxDefinitionLevel()) { Binary binary = valuesReader.readBytes(); Slice value; if (binary.length() == 0) { value = EMPTY_SLICE; } else { value = wrappedBuffer(binary.getBytes()); } if (isVarcharType(type)) { value = truncateToLength(value, type); } if (isCharType(type)) { value = truncateToLengthAndTrimSpaces(value, type); } type.writeSlice(blockBuilder, value); } else if (isValueNull()) { blockBuilder.appendNull(); } }
public RawColumnDecoder(DecoderColumnHandle columnHandle) requireNonNull(columnHandle, "columnHandle is null"); checkArgument(!columnHandle.isInternal(), "unexpected internal column '%s'", columnHandle.getName()); checkArgument(columnHandle.getFormatHint() == null, "unexpected format hint '%s' defined for column '%s'", columnHandle.getFormatHint(), columnHandle.getName()); if (!isVarcharType(columnType)) { end = OptionalInt.of(start + fieldType.getSize()); }); checkArgument(isSupportedType(columnType), "Unsupported column type '%s' for column '%s'", columnType.getDisplayName(), columnName); checkFieldTypeOneOf(fieldType, columnName, FieldType.DOUBLE, FieldType.FLOAT); if (isVarcharType(columnType)) { checkFieldTypeOneOf(fieldType, columnName, FieldType.BYTE); if (!isVarcharType(columnType)) { checkArgument(!end.isPresent() || end.getAsInt() - start == fieldType.getSize(), "Bytes mapping for column '%s' does not match dataFormat '%s'; expected %s bytes but got %s",
public static Slice truncateToLengthAndTrimSpaces(Slice slice, int maxLength) { requireNonNull(slice, "slice is null"); if (maxLength < 0) { throw new IllegalArgumentException("Max length must be greater or equal than zero"); } return trimTrailingSpaces(truncateToLength(slice, maxLength)); }
public static Slice truncateToLength(Slice slice, VarcharType varcharType) { requireNonNull(varcharType, "varcharType is null"); return truncateToLength(slice, varcharType.getLength()); }
if (isVarcharType(type)) { slice = constantSlice.slice(0, Math.min(((VarcharType) type).getLength(), constantSlice.length())); builder = type.createBlockBuilder(null, rowsCount); builder = type.createBlockBuilder(null, rowsCount, slice.length()); Class<?> javaType = type.getJavaType(); if (javaType == boolean.class) { type.writeBoolean(builder, false); requireNonNull(slice, "slice is null"); type.writeSlice(builder, slice, 0, slice.length());
ConnectorPageSource delegate) requireNonNull(columnMappings, "columnMappings is null"); requireNonNull(hiveStorageTimeZone, "hiveStorageTimeZone is null"); requireNonNull(typeManager, "typeManager is null"); this.delegate = requireNonNull(delegate, "delegate is null"); prefilledValue = doublePartitionKey(columnValue, name); else if (isVarcharType(type)) { prefilledValue = varcharPartitionKey(columnValue, name, type); else if (isCharType(type)) { prefilledValue = charPartitionKey(columnValue, name, type); throw new PrestoException(NOT_SUPPORTED, format("Unsupported column type %s for prefilled column: %s", type.getDisplayName(), name));
private static void serializePrimitive(Type type, BlockBuilder builder, Object object) { requireNonNull(builder, "parent builder is null"); if (object == null) { builder.appendNull(); return; } if (BOOLEAN.equals(type)) { BOOLEAN.writeBoolean(builder, (Boolean) object); } else if (BIGINT.equals(type) || INTEGER.equals(type) || SMALLINT.equals(type) || TINYINT.equals(type) || REAL.equals(type) || DATE.equals(type) || TIMESTAMP.equals(type)) { type.writeLong(builder, getLongExpressedValue(object)); } else if (DOUBLE.equals(type)) { DOUBLE.writeDouble(builder, ((Number) object).doubleValue()); } else if (isVarcharType(type) || VARBINARY.equals(type) || isCharType(type)) { type.writeSlice(builder, getSliceExpressedValue(object, type)); } else { throw new UnsupportedOperationException("Unsupported primitive type: " + type); } }
if (BOOLEAN.equals(type)) { type.writeBoolean(blockBuilder, (Boolean) value); else if (TINYINT.equals(type) || SMALLINT.equals(type) || INTEGER.equals(type) || BIGINT.equals(type)) { type.writeLong(blockBuilder, ((Number) value).longValue()); type.writeLong(blockBuilder, ((SqlDecimal) value).toBigDecimal().unscaledValue().longValue()); type.writeSlice(blockBuilder, Decimals.encodeUnscaledValue(((SqlDecimal) value).toBigDecimal().unscaledValue())); else if (DOUBLE.equals(type)) { type.writeDouble(blockBuilder, ((Number) value).doubleValue()); else if (REAL.equals(type)) { float floatValue = ((Number) value).floatValue(); type.writeLong(blockBuilder, Float.floatToIntBits(floatValue)); Slice slice = truncateToLength(utf8Slice((String) value), type); type.writeSlice(blockBuilder, slice); Slice slice = truncateToLengthAndTrimSpaces(utf8Slice((String) value), type); type.writeSlice(blockBuilder, slice); type.writeSlice(blockBuilder, Slices.wrappedBuffer(((SqlVarbinary) value).getBytes())); else if (DATE.equals(type)) { long days = ((SqlDate) value).getDays(); type.writeLong(blockBuilder, days);
values.add(null); else if (BOOLEAN.equals(type)) { values.add(type.getBoolean(block, position)); else if (BIGINT.equals(type)) { values.add(type.getLong(block, position)); else if (INTEGER.equals(type)) { values.add(toIntExact(type.getLong(block, position))); else if (DOUBLE.equals(type)) { values.add(type.getDouble(block, position)); else if (REAL.equals(type)) { values.add(intBitsToFloat(toIntExact(type.getLong(block, position)))); else if (DATE.equals(type)) { values.add(DATE_FORMATTER.print(TimeUnit.DAYS.toMillis(type.getLong(block, position)))); values.add(new Timestamp(type.getLong(block, position))); else if (isVarcharType(type)) { values.add(type.getSlice(block, position).toStringUtf8());
private static Slice getSlice(Object value, Type type, String columnName) { switch (type.getTypeSignature().getBase()) { case VARCHAR: if (value instanceof Utf8) { return truncateToLength(utf8Slice(value.toString()), type); } case VARBINARY: if (value instanceof ByteBuffer) { return Slices.wrappedBuffer((ByteBuffer) value); } default: throw new PrestoException(DECODER_CONVERSION_NOT_SUPPORTED, format("cannot decode object of '%s' as '%s' for column '%s'", value.getClass(), type, columnName)); } }
return type.getBoolean(block, position); return type.getLong(block, position); return (int) type.getLong(block, position); return type.getDouble(block, position); if (isVarcharType(type)) { return type.getSlice(block, position).toStringUtf8();
private static Slice getSliceExpressedValue(Object value, Type type) { Slice sliceValue; if (value instanceof String) { sliceValue = Slices.utf8Slice((String) value); } else if (value instanceof byte[]) { sliceValue = Slices.wrappedBuffer((byte[]) value); } else if (value instanceof Integer) { sliceValue = Slices.utf8Slice(value.toString()); } else { throw new IllegalStateException("unsupported string field type: " + value.getClass().getName()); } if (isVarcharType(type)) { sliceValue = truncateToLength(sliceValue, type); } if (isCharType(type)) { sliceValue = truncateToLengthAndTrimSpaces(sliceValue, type); } return sliceValue; }
if (BOOLEAN.equals(type) || Varchars.isVarcharType(type)) { return value; if (BIGINT.equals(type)) { return ((Number) value).longValue(); if (INTEGER.equals(type)) { return ((Number) value).intValue(); if (DOUBLE.equals(type)) { return ((Number) value).doubleValue(); if (DATE.equals(type)) { return value;
Slice value = Slices.wrappedBuffer(hiveValue.getBytes(), 0, hiveValue.getLength()); Type type = types[column]; if (isVarcharType(type)) { value = truncateToLength(value, type); if (isCharType(type)) { value = truncateToLengthAndTrimSpaces(value, type); slices[column] = Slices.copyOf(value); nulls[column] = false;
@Override public Slice getSlice() { return truncateToLength(utf8Slice(tokens[columnIndex]), columnType); } };