@Override public byte getByte(int rowId) { return columnPage.getByte(rowId); }
if (type == DataTypes.BYTE) { value = page.getByte(rowId); } else if (type == DataTypes.SHORT) {
byte value = getByte(rowId); if (columnPageEncoderMeta.getColumnSpec().getSchemaDataType() == DataTypes.BOOLEAN) { return BooleanConvert.byte2Boolean(value);
/** * Get boolean value at rowId */ public boolean getBoolean(int rowId) { return BooleanConvert.byte2Boolean(getByte(rowId)); }
if ((srcDataType == DataTypes.BYTE) || (srcDataType == DataTypes.BOOLEAN)) { byte[] out = new byte[1]; out[0] = (columnPage.getByte(rowId)); return ByteUtil.toBytes(ByteUtil.toBoolean(out)); } else if (srcDataType == DataTypes.BYTE_ARRAY) {
@Override public void fillMeasureVector(ColumnPage dataChunk, ColumnVectorInfo info) { int offset = info.offset; int len = offset + info.size; int vectorOffset = info.vectorOffset; CarbonColumnVector vector = info.vector; BitSet nullBitSet = dataChunk.getNullBits(); if (nullBitSet.isEmpty()) { for (int i = offset; i < len; i++) { vector.putByte(vectorOffset, dataChunk.getByte(i)); vectorOffset++; } } else { for (int i = offset; i < len; i++) { if (nullBitSet.get(i)) { vector.putNull(vectorOffset); } else { vector.putByte(vectorOffset, dataChunk.getByte(i)); } vectorOffset++; } } }
@Override public void fillMeasureVector(int[] filteredRowId, ColumnPage dataChunk, ColumnVectorInfo info) { int offset = info.offset; int len = offset + info.size; int vectorOffset = info.vectorOffset; CarbonColumnVector vector = info.vector; BitSet nullBitSet = dataChunk.getNullBits(); if (nullBitSet.isEmpty()) { for (int i = offset; i < len; i++) { int currentRow = filteredRowId[i]; vector.putByte(vectorOffset, dataChunk.getByte(currentRow)); vectorOffset++; } } else { for (int i = offset; i < len; i++) { int currentRow = filteredRowId[i]; if (nullBitSet.get(currentRow)) { vector.putNull(vectorOffset); } else { vector.putByte(vectorOffset, dataChunk.getByte(currentRow)); } vectorOffset++; } } } }
@Override public long getLong(int rowId) { DataType dataType = columnPage.getDataType(); if (dataType == DataTypes.BOOLEAN || dataType == DataTypes.BYTE) { return converter.decodeLong(columnPage.getByte(rowId)); } else if (dataType == DataTypes.SHORT) { return converter.decodeLong(columnPage.getShort(rowId)); } else if (dataType == DataTypes.SHORT_INT) { return converter.decodeLong(columnPage.getShortInt(rowId)); } else if (dataType == DataTypes.INT) { return converter.decodeLong(columnPage.getInt(rowId)); } else if (dataType == DataTypes.LONG) { return columnPage.getLong(rowId); } else { throw new RuntimeException("internal error: " + this.toString()); } }
Object getMeasureData(ColumnPage dataChunk, int index, CarbonMeasure carbonMeasure) { if (!dataChunk.getNullBits().get(index)) { DataType dataType = carbonMeasure.getDataType(); if (dataType == DataTypes.BOOLEAN) { return dataChunk.getBoolean(index); } else if (dataType == DataTypes.SHORT) { return (short) dataChunk.getLong(index); } else if (dataType == DataTypes.INT) { return (int) dataChunk.getLong(index); } else if (dataType == DataTypes.LONG) { return dataChunk.getLong(index); } else if (dataType == DataTypes.FLOAT) { return dataChunk.getFloat(index); } else if (dataType == DataTypes.BYTE) { return dataChunk.getByte(index); } else if (DataTypes.isDecimal(dataType)) { BigDecimal bigDecimalMsrValue = dataChunk.getDecimal(index); if (null != bigDecimalMsrValue && carbonMeasure.getScale() > bigDecimalMsrValue.scale()) { bigDecimalMsrValue = bigDecimalMsrValue.setScale(carbonMeasure.getScale(), RoundingMode.HALF_UP); } // convert data type as per the computing engine return DataTypeUtil.getDataTypeConverter().convertFromBigDecimalToDecimal( bigDecimalMsrValue); } else { return dataChunk.getDouble(index); } } return null; }
public static Object getMeasureObjectBasedOnDataType(ColumnPage measurePage, int index, DataType dataType, CarbonMeasure carbonMeasure) { if (dataType == DataTypes.BOOLEAN) { return measurePage.getBoolean(index); } else if (dataType == DataTypes.SHORT) { return (short) measurePage.getLong(index); } else if (dataType == DataTypes.INT) { return (int) measurePage.getLong(index); } else if (dataType == DataTypes.LONG) { return measurePage.getLong(index); } else if (dataType == DataTypes.FLOAT) { return measurePage.getFloat(index); } else if (dataType == DataTypes.BYTE) { return measurePage.getByte(index); } else if (DataTypes.isDecimal(dataType)) { BigDecimal bigDecimalMsrValue = measurePage.getDecimal(index); if (null != bigDecimalMsrValue && carbonMeasure.getScale() > bigDecimalMsrValue.scale()) { bigDecimalMsrValue = bigDecimalMsrValue.setScale(carbonMeasure.getScale(), RoundingMode.HALF_UP); } if (null != bigDecimalMsrValue) { return normalizeDecimalValue(bigDecimalMsrValue, carbonMeasure.getPrecision()); } else { return null; } } else { return measurePage.getDouble(index); } }
/** * Get null at rowId */ private Object getNull(int rowId) { Object result; DataType dataType = columnPageEncoderMeta.getStoreDataType(); if (dataType == DataTypes.BOOLEAN) { result = getBoolean(rowId); } else if (dataType == DataTypes.BYTE) { result = getByte(rowId); if (columnPageEncoderMeta.getColumnSpec().getSchemaDataType() == DataTypes.BOOLEAN) { result = BooleanConvert.byte2Boolean((byte)result); } } else if (dataType == DataTypes.SHORT) { result = getShort(rowId); } else if (dataType == DataTypes.INT) { result = getInt(rowId); } else if (dataType == DataTypes.LONG) { result = getLong(rowId); } else if (dataType == DataTypes.DOUBLE) { result = getDouble(rowId); } else if (DataTypes.isDecimal(dataType)) { result = getDecimal(rowId); } else { throw new IllegalArgumentException("unsupported data type: " + dataType); } return result; }
@Override public double getDouble(int rowId) { DataType dataType = columnPage.getDataType(); if (dataType == DataTypes.BOOLEAN || dataType == DataTypes.BYTE) { return converter.decodeDouble(columnPage.getByte(rowId)); } else if (dataType == DataTypes.SHORT) { return converter.decodeDouble(columnPage.getShort(rowId)); } else if (dataType == DataTypes.SHORT_INT) { return converter.decodeDouble(columnPage.getShortInt(rowId)); } else if (dataType == DataTypes.INT) { return converter.decodeDouble(columnPage.getInt(rowId)); } else if (dataType == DataTypes.LONG) { return converter.decodeDouble(columnPage.getLong(rowId)); } else if (dataType == DataTypes.FLOAT) { return converter.decodeDouble(columnPage.getFloat(rowId)); } else if (dataType == DataTypes.DOUBLE) { return columnPage.getDouble(rowId); } else { throw new RuntimeException("internal error: " + this.toString()); } }
@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()); } }
if (srcDataType == DataTypes.BYTE || srcDataType == DataTypes.BOOLEAN) { for (int i = 0; i < input.getActualRowCount(); i++) { data[i] = input.getByte(i);