in core/src/main/java/org/apache/carbondata/core/datastore/page/ColumnPage.java [177:238]
public static ColumnPage newPage(ColumnPageEncoderMeta columnPageEncoderMeta, int pageSize) {
ColumnPage instance;
DataType dataType = columnPageEncoderMeta.getStoreDataType();
TableSpec.ColumnSpec columnSpec = columnPageEncoderMeta.getColumnSpec();
String compressorName = columnPageEncoderMeta.getCompressorName();
if (isUnsafeEnabled(columnPageEncoderMeta)) {
if (dataType == DataTypes.BOOLEAN) {
instance = new UnsafeFixLengthColumnPage(
new ColumnPageEncoderMeta(columnSpec, BYTE, compressorName), pageSize);
} else if (dataType == BYTE ||
dataType == SHORT ||
dataType == DataTypes.SHORT_INT ||
dataType == INT ||
dataType == LONG ||
dataType == DataTypes.FLOAT ||
dataType == DataTypes.DOUBLE) {
instance = new UnsafeFixLengthColumnPage(columnPageEncoderMeta, pageSize);
} else if (dataType == DataTypes.TIMESTAMP) {
instance = new UnsafeFixLengthColumnPage(
new ColumnPageEncoderMeta(columnSpec, LONG, compressorName), pageSize);
} else if (DataTypes.isDecimal(dataType)) {
instance = new UnsafeDecimalColumnPage(columnPageEncoderMeta, pageSize);
} else if (dataType == DataTypes.STRING ||
dataType == DataTypes.VARCHAR ||
dataType == DataTypes.BINARY) {
instance = new LVByteBufferColumnPage(columnPageEncoderMeta, pageSize);
} else if (dataType == BYTE_ARRAY) {
instance = new UnsafeVarLengthColumnPage(columnPageEncoderMeta, pageSize);
} else {
throw new RuntimeException("Unsupported data dataType: " + dataType);
}
} else {
if (dataType == DataTypes.BOOLEAN || dataType == BYTE) {
instance = newBytePage(columnPageEncoderMeta, new byte[pageSize]);
} else if (dataType == SHORT) {
instance = newShortPage(columnPageEncoderMeta, new short[pageSize]);
} else if (dataType == DataTypes.SHORT_INT) {
instance = newShortIntPage(columnPageEncoderMeta, new byte[pageSize * 3]);
} else if (dataType == INT) {
instance = newIntPage(columnPageEncoderMeta, new int[pageSize]);
} else if (dataType == LONG || dataType == DataTypes.TIMESTAMP) {
instance = newLongPage(
new ColumnPageEncoderMeta(columnPageEncoderMeta.getColumnSpec(), LONG,
columnPageEncoderMeta.getCompressorName()), new long[pageSize]);
} else if (dataType == DataTypes.FLOAT) {
instance = newFloatPage(columnPageEncoderMeta, new float[pageSize]);
} else if (dataType == DataTypes.DOUBLE) {
instance = newDoublePage(columnPageEncoderMeta, new double[pageSize]);
} else if (DataTypes.isDecimal(dataType)) {
instance = newDecimalPage(columnPageEncoderMeta, new byte[pageSize][]);
} else if (dataType == DataTypes.STRING ||
dataType == DataTypes.VARCHAR ||
dataType == DataTypes.BINARY) {
instance = new LVByteBufferColumnPage(columnPageEncoderMeta, pageSize);
} else if (dataType == BYTE_ARRAY) {
instance = new SafeVarLengthColumnPage(columnPageEncoderMeta, pageSize);
} else {
throw new RuntimeException("Unsupported data dataType: " + dataType);
}
}
return instance;
}