public TsBlock nextBatch()

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;
    }