/** * Returns true for fixed length DataTypes. * @param dataType * @return */ public static boolean isFixedSizeDataType(DataType dataType) { if (dataType == DataTypes.STRING || dataType == DataTypes.VARCHAR || DataTypes.isDecimal(dataType)) { return false; } else { return true; } }
/** * Check if the column is a no dictionary primitive column * * @param dataType * @return */ public static boolean isPrimitiveColumn(DataType dataType) { if (dataType == DataTypes.BOOLEAN || dataType == DataTypes.BYTE || dataType == DataTypes.SHORT || dataType == DataTypes.INT || dataType == DataTypes.LONG || dataType == DataTypes.TIMESTAMP || DataTypes.isDecimal(dataType) || dataType == DataTypes.FLOAT || dataType == DataTypes.DOUBLE) { return true; } return false; }
@Override public Object getMax() { if (dataType == DataTypes.BOOLEAN || dataType == DataTypes.BYTE) { return maxByte; } else if (dataType == DataTypes.SHORT) { return maxShort; } else if (dataType == DataTypes.INT) { return maxInt; } else if (dataType == DataTypes.LONG || dataType == DataTypes.TIMESTAMP) { return maxLong; } else if (dataType == DataTypes.DOUBLE) { return maxDouble; } else if (dataType == DataTypes.FLOAT) { return maxFloat; } else if (DataTypes.isDecimal(dataType)) { return maxDecimal; } return null; }
@Override public Object getMin() { if (dataType == DataTypes.BOOLEAN || dataType == DataTypes.BYTE) { return minByte; } else if (dataType == DataTypes.SHORT) { return minShort; } else if (dataType == DataTypes.INT) { return minInt; } else if (dataType == DataTypes.LONG || dataType == DataTypes.TIMESTAMP) { return minLong; } else if (dataType == DataTypes.DOUBLE) { return minDouble; } else if (dataType == DataTypes.FLOAT) { return minFloat; } else if (DataTypes.isDecimal(dataType)) { return minDecimal; } return null; }
/** * Set the scale if it is decimal type */ public void setScale(int scale) { this.scale = scale; if (DataTypes.isDecimal(dataType)) { ((DecimalType) dataType).setScale(scale); } }
/** * Set the precision if it is decimal type */ public void setPrecision(int precision) { this.precision = precision; if (DataTypes.isDecimal(dataType)) { ((DecimalType) dataType).setPrecision(precision); } }
public int getScale() { if (DataTypes.isDecimal(schemaDataType)) { return ((DecimalType) schemaDataType).getScale(); } else if (schemaDataType == DataTypes.BYTE_ARRAY) { return -1; } throw new UnsupportedOperationException(); }
public int getPrecision() { if (DataTypes.isDecimal(schemaDataType)) { return ((DecimalType) schemaDataType).getPrecision(); } else if (schemaDataType == DataTypes.BYTE_ARRAY) { return -1; } throw new UnsupportedOperationException(); }
public int getScale() { if (DataTypes.isDecimal(columnSpec.getSchemaDataType())) { return columnSpec.getScale(); } throw new UnsupportedOperationException(); }
public int getPrecision() { if (DataTypes.isDecimal(columnSpec.getSchemaDataType())) { return columnSpec.getPrecision(); } throw new UnsupportedOperationException(); }
@Override public void write(DataOutput out) throws IOException { out.writeUTF(fieldName); out.writeByte(schemaDataType.getId()); out.writeByte(columnType.ordinal()); if (DataTypes.isDecimal(schemaDataType)) { DecimalType decimalType = (DecimalType) schemaDataType; out.writeInt(decimalType.getScale()); out.writeInt(decimalType.getPrecision()); } else { out.writeInt(-1); out.writeInt(-1); } }
@Override public void readFields(DataInput in) throws IOException { this.fieldName = in.readUTF(); this.schemaDataType = DataTypes.valueOf(in.readByte()); this.columnType = ColumnType.valueOf(in.readByte()); int scale = in.readInt(); int precision = in.readInt(); if (DataTypes.isDecimal(this.schemaDataType)) { DecimalType decimalType = (DecimalType) this.schemaDataType; decimalType.setPrecision(precision); decimalType.setScale(scale); } } }
public HashPartitionerImpl(List<Integer> indexes, List<ColumnSchema> columnSchemas, int numberOfBuckets) { this.numberOfBuckets = numberOfBuckets; hashes = new Hash[indexes.size()]; for (int i = 0; i < indexes.size(); i++) { DataType dataType = columnSchemas.get(i).getDataType(); if (dataType == DataTypes.SHORT || dataType == DataTypes.INT || dataType == DataTypes.LONG) { hashes[i] = new IntegralHash(indexes.get(i)); } else if (dataType == DataTypes.DOUBLE || dataType == DataTypes.FLOAT || DataTypes.isDecimal(dataType)) { hashes[i] = new DecimalHash(indexes.get(i)); } else { hashes[i] = new StringHash(indexes.get(i)); } } }
@Override public ColumnPage decode(byte[] input, int offset, int length) throws MemoryException { ColumnPage decodedPage; if (DataTypes.isDecimal(dataType)) { decodedPage = ColumnPage.decompressDecimalPage(meta, input, offset, length); } else { decodedPage = ColumnPage.decompress(meta, input, offset, length, false); } return LazyColumnPage.newPage(decodedPage, converter); }
@Override public ColumnPage decode(byte[] input, int offset, int length) throws MemoryException, IOException { ColumnPage page = null; if (DataTypes.isDecimal(meta.getSchemaDataType())) { page = ColumnPage.decompressDecimalPage(meta, input, offset, length); } else { page = ColumnPage.decompress(meta, input, offset, length, false); } return LazyColumnPage.newPage(page, converter); }
@Override public ColumnPage decode(byte[] input, int offset, int length) throws MemoryException, IOException { ColumnPage page = null; if (DataTypes.isDecimal(meta.getSchemaDataType())) { page = ColumnPage.decompressDecimalPage(meta, input, offset, length); } else { page = ColumnPage.decompress(meta, input, offset, length, false); } return LazyColumnPage.newPage(page, converter); }
@Override public void readFields(DataInput in) throws IOException { columnSpec = new TableSpec.ColumnSpec(); columnSpec.readFields(in); storeDataType = DataTypes.valueOf(in.readByte()); if (DataTypes.isDecimal(storeDataType)) { DecimalType decimalType = (DecimalType) storeDataType; decimalType.setPrecision(columnSpec.getPrecision()); decimalType.setScale(columnSpec.getScale()); } setDecimal(in.readInt()); setDataTypeSelected(in.readByte()); readMinMax(in); compressorName = in.readUTF(); }
private static ColumnPage createPage(ColumnPageEncoderMeta columnPageEncoderMeta, int pageSize) { if (DataTypes.isDecimal(columnPageEncoderMeta.getStoreDataType())) { return createDecimalPage(columnPageEncoderMeta, pageSize); } else if (columnPageEncoderMeta.getStoreDataType().equals(BYTE_ARRAY)) { return createVarLengthPage(columnPageEncoderMeta, pageSize); } else { return createFixLengthPage(columnPageEncoderMeta, pageSize); } }
public static DataType getMeasureDataType( MeasureColumnResolvedFilterInfo msrColumnEvaluatorInfo) { if (msrColumnEvaluatorInfo.getType() == DataTypes.BOOLEAN) { return DataTypes.BOOLEAN; } else if (msrColumnEvaluatorInfo.getType() == DataTypes.SHORT) { return DataTypes.SHORT; } else if (msrColumnEvaluatorInfo.getType() == DataTypes.INT) { return DataTypes.INT; } else if (msrColumnEvaluatorInfo.getType() == DataTypes.LONG) { return DataTypes.LONG; } else if (msrColumnEvaluatorInfo.getType() == DataTypes.FLOAT) { return DataTypes.FLOAT; } else if (msrColumnEvaluatorInfo.getType() == DataTypes.BYTE) { return DataTypes.BYTE; } else if (DataTypes.isDecimal(msrColumnEvaluatorInfo.getType())) { return DataTypes.createDefaultDecimalType(); } else { return DataTypes.DOUBLE; } }
@Override public BigDecimal getDecimal(int rowId) { DecimalConverterFactory.DecimalConverter decimalConverter = ((DecimalColumnPage) columnPage).getDecimalConverter(); DataType dataType = columnPage.getDataType(); if (dataType == DataTypes.BYTE) { return decimalConverter.getDecimal(converter.decodeLong(columnPage.getByte(rowId))); } else if (dataType == DataTypes.SHORT) { return decimalConverter.getDecimal(converter.decodeLong(columnPage.getShort(rowId))); } else if (dataType == DataTypes.SHORT_INT) { return decimalConverter.getDecimal(converter.decodeLong(columnPage.getShortInt(rowId))); } else if (dataType == DataTypes.INT) { return decimalConverter.getDecimal(converter.decodeLong(columnPage.getInt(rowId))); } else if (dataType == DataTypes.LONG || DataTypes.isDecimal(dataType)) { return columnPage.getDecimal(rowId); } else { throw new RuntimeException("internal error: " + this.toString()); } }