@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.putDouble(vectorOffset, dataChunk.getDouble(i)); vectorOffset++; } } else { for (int i = offset; i < len; i++) { if (nullBitSet.get(i)) { vector.putNull(vectorOffset); } else { vector.putDouble(vectorOffset, dataChunk.getDouble(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.putDouble(vectorOffset, dataChunk.getDouble(currentRow)); vectorOffset++; } } else { for (int i = offset; i < len; i++) { int currentRow = filteredRowId[i]; if (nullBitSet.get(currentRow)) { vector.putNull(vectorOffset); } else { vector.putDouble(vectorOffset, dataChunk.getDouble(currentRow)); } vectorOffset++; } } } }
value = page.getFloat(rowId); } else if (type == DataTypes.DOUBLE) { value = page.getDouble(rowId); } else if (type == DataTypes.STRING) { byte[] bytes = page.getBytes(rowId);
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); } }
return getLong(rowId); } else if (dataType == DataTypes.DOUBLE) { return getDouble(rowId); } else if (DataTypes.isDecimal(dataType)) { return getDecimal(rowId);
/** * 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()); } }
msrValue = columnPage.getDouble(index);
return ByteUtil.toXorBytes(floatData); } else if (srcDataType == DataTypes.DOUBLE) { double doubleData = columnPage.getDouble(rowId); return ByteUtil.toXorBytes(doubleData); } else if (DataTypes.isDecimal(srcDataType)) { return columnPage.getBytes(rowId); } else if (srcDataType == DataTypes.DOUBLE) { return ByteUtil.toXorBytes(columnPage.getDouble(rowId)); } else if (srcDataType == DataTypes.FLOAT) { return ByteUtil.toXorBytes(columnPage.getFloat(rowId));
data[i] = input.getDouble(i);