in iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TVList.java [744:843]
public TsBlock nextBatch() {
TSDataType dataType = getDataType();
TsBlockBuilder builder = new TsBlockBuilder(Collections.singletonList(dataType));
switch (dataType) {
case BOOLEAN:
while (index < rows && builder.getPositionCount() < maxNumberOfPointsInPage) {
long time = getTime(index);
if (!isNullValue(getValueIndex(index))
&& !isPointDeleted(time, deletionList, deleteCursor)
&& (index == rows - 1 || time != getTime(index + 1))) {
builder.getTimeColumnBuilder().writeLong(time);
builder.getColumnBuilder(0).writeBoolean(getBoolean(index));
builder.declarePosition();
}
index++;
}
break;
case INT32:
case DATE:
while (index < rows && builder.getPositionCount() < maxNumberOfPointsInPage) {
long time = getTime(index);
if (!isNullValue(getValueIndex(index))
&& !isPointDeleted(time, deletionList, deleteCursor)
&& (index == rows - 1 || time != getTime(index + 1))) {
builder.getTimeColumnBuilder().writeLong(time);
builder.getColumnBuilder(0).writeInt(getInt(index));
builder.declarePosition();
}
index++;
}
break;
case INT64:
case TIMESTAMP:
while (index < rows && builder.getPositionCount() < maxNumberOfPointsInPage) {
long time = getTime(index);
if (!isNullValue(getValueIndex(index))
&& !isPointDeleted(time, deletionList, deleteCursor)
&& (index == rows - 1 || time != getTime(index + 1))) {
builder.getTimeColumnBuilder().writeLong(time);
builder.getColumnBuilder(0).writeLong(getLong(index));
builder.declarePosition();
}
index++;
}
break;
case FLOAT:
while (index < rows && builder.getPositionCount() < maxNumberOfPointsInPage) {
long time = getTime(index);
if (!isNullValue(getValueIndex(index))
&& !isPointDeleted(time, deletionList, deleteCursor)
&& (index == rows - 1 || time != getTime(index + 1))) {
builder.getTimeColumnBuilder().writeLong(time);
builder
.getColumnBuilder(0)
.writeFloat(
roundValueWithGivenPrecision(getFloat(index), floatPrecision, encoding));
builder.declarePosition();
}
index++;
}
break;
case DOUBLE:
while (index < rows && builder.getPositionCount() < maxNumberOfPointsInPage) {
long time = getTime(index);
if (!isNullValue(getValueIndex(index))
&& !isPointDeleted(time, deletionList, deleteCursor)
&& (index == rows - 1 || time != getTime(index + 1))) {
builder.getTimeColumnBuilder().writeLong(time);
builder
.getColumnBuilder(0)
.writeDouble(
roundValueWithGivenPrecision(getDouble(index), floatPrecision, encoding));
builder.declarePosition();
}
index++;
}
break;
case TEXT:
case BLOB:
case STRING:
while (index < rows && builder.getPositionCount() < maxNumberOfPointsInPage) {
long time = getTime(index);
if (!isNullValue(getValueIndex(index))
&& !isPointDeleted(time, deletionList, deleteCursor)
&& (index == rows - 1 || time != getTime(index + 1))) {
builder.getTimeColumnBuilder().writeLong(time);
builder.getColumnBuilder(0).writeBinary(getBinary(index));
builder.declarePosition();
}
index++;
}
break;
default:
throw new UnSupportedDataTypeException(
String.format("Data type %s is not supported.", dataType));
}
TsBlock tsBlock = builder.build();
tsBlocks.add(tsBlock);
return tsBlock;
}