public BatchData fetchBatchDataByPageInfo()

in tsfile-viewer-core/src/main/java/org/apache/iotdb/tool/core/service/TsFileAnalyserV13.java [722:780]


  public BatchData fetchBatchDataByPageInfo(IPageInfo pageInfo) throws IOException {

    BatchData batchData;
    Decoder timeDecoder =
        Decoder.getDecoderByType(
            TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder()),
            TSDataType.INT64);
    // 非对齐时间序列
    //    if (pageInfo instanceof PageInfo) {
    if (pageInfo.getDataType() != TSDataType.VECTOR) {
      PageHeader pageHeader = fetchPageHeader(pageInfo);
      Decoder valueDecoder =
          Decoder.getDecoderByType(pageInfo.getEncodingType(), pageInfo.getDataType());
      ByteBuffer pageData = reader.readPage(pageHeader, pageInfo.getCompressionType());

      PageReader pageReader =
          new PageReader(
              pageHeader, pageData, pageInfo.getDataType(), valueDecoder, timeDecoder, null);

      batchData = pageReader.getAllSatisfiedPageData();
    } else {
      // 对齐时间序列
      IPageInfo timePageInfo = ((AlignedPageInfo) pageInfo).getTimePageInfo();
      PageHeader timePageHeader = fetchPageHeader(timePageInfo);
      ByteBuffer timeByteBuffer =
          reader.readPage(timePageHeader, timePageInfo.getCompressionType());
      // done
      List<PageHeader> valuePageHeaders = new ArrayList<>();
      List<ByteBuffer> valueByteBuffers = new ArrayList<>();
      List<TSDataType> valueTSDataTypes = new ArrayList<>();
      List<Decoder> valueDecoders = new ArrayList<>();
      List<IPageInfo> valuePageInfoList = ((AlignedPageInfo) pageInfo).getValuePageInfoList();
      for (IPageInfo valuePageInfo : valuePageInfoList) {
        PageHeader valuePageHeader = fetchPageHeader(valuePageInfo);
        valuePageHeaders.add(valuePageHeader);
        valueByteBuffers.add(reader.readPage(valuePageHeader, valuePageInfo.getCompressionType()));
        valueTSDataTypes.add(valuePageInfo.getDataType());
        valueDecoders.add(
            Decoder.getDecoderByType(valuePageInfo.getEncodingType(), valuePageInfo.getDataType()));
      }

      AlignedPageReader alignedPageReader =
          new AlignedPageReader(
              timePageHeader,
              timeByteBuffer,
              timeDecoder,
              valuePageHeaders,
              valueByteBuffers,
              valueTSDataTypes,
              valueDecoders,
              null);

      batchData = alignedPageReader.getAllSatisfiedPageData();
    }
    //    else {
    //      batchData = null;
    //    }
    return batchData;
  }