JackieTien97 commented on code in PR #12539:
URL: https://github.com/apache/iotdb/pull/12539#discussion_r1606182721


##########
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java:
##########
@@ -1612,6 +1623,300 @@ public String getStorageGroupName() {
     return storageGroupName;
   }
 
+  private void processAlignedChunkMetaDataFromFlushedMemTable(
+      AlignedChunkMetadata alignedChunkMetadata,
+      Map<String, List<IChunkMetadata>> measurementToChunkMetaMap,
+      Map<String, List<IChunkHandle>> measurementToChunkHandleMap,
+      TsFileSequenceReader tsFileReader) {
+    SharedTimeDataBuffer sharedTimeDataBuffer =
+        new SharedTimeDataBuffer(alignedChunkMetadata.getTimeChunkMetadata());
+    for (IChunkMetadata valueChunkMetaData : 
alignedChunkMetadata.getValueChunkMetadataList()) {
+      measurementToChunkMetaMap
+          .computeIfAbsent(valueChunkMetaData.getMeasurementUid(), k -> new 
ArrayList<>())
+          .add(valueChunkMetaData);
+      measurementToChunkHandleMap
+          .computeIfAbsent(valueChunkMetaData.getMeasurementUid(), k -> new 
ArrayList<>())
+          .add(
+              new DiskAlignedChunkHandleImpl(
+                  tsFileReader,
+                  valueChunkMetaData.getOffsetOfChunkHeader(),
+                  valueChunkMetaData.getStatistics(),
+                  sharedTimeDataBuffer));
+    }
+  }
+
+  private void processChunkMetaDataFromFlushedMemTable(
+      ChunkMetadata chunkMetadata,
+      Map<String, List<IChunkMetadata>> measurementToChunkMetaMap,
+      Map<String, List<IChunkHandle>> measurementToChunkHandleMap,
+      TsFileSequenceReader tsFileReader) {
+    measurementToChunkMetaMap
+        .computeIfAbsent(chunkMetadata.getMeasurementUid(), k -> new 
ArrayList<>())
+        .add(chunkMetadata);
+    measurementToChunkHandleMap
+        .computeIfAbsent(chunkMetadata.getMeasurementUid(), k -> new 
ArrayList<>())
+        .add(
+            new DiskChunkHandleImpl(
+                tsFileReader,
+                chunkMetadata.getOffsetOfChunkHeader(),
+                chunkMetadata.getStatistics()));
+  }
+
+  private void buildChunkHandleForFlushedMemTable(
+      List<IChunkMetadata> chunkMetadataList,
+      Map<String, List<IChunkMetadata>> measurementToChunkMetaList,
+      Map<String, List<IChunkHandle>> measurementToChunkHandleList)
+      throws IOException {
+    TsFileSequenceReader tsFileReader =
+        
FileReaderManager.getInstance().get(this.tsFileResource.getTsFilePath(), true);
+    for (IChunkMetadata chunkMetadata : chunkMetadataList) {
+      if (chunkMetadata instanceof AlignedChunkMetadata) {
+        processAlignedChunkMetaDataFromFlushedMemTable(
+            (AlignedChunkMetadata) chunkMetadata,
+            measurementToChunkMetaList,
+            measurementToChunkHandleList,
+            tsFileReader);
+      } else {
+        processChunkMetaDataFromFlushedMemTable(
+            (ChunkMetadata) chunkMetadata,
+            measurementToChunkMetaList,
+            measurementToChunkHandleList,
+            tsFileReader);
+      }
+    }
+  }
+
+  private List<ChunkMetadata> 
searchTimeChunkMetaData(List<List<ChunkMetadata>> chunkMetaDataList) {
+    for (List<ChunkMetadata> chunkMetadata : chunkMetaDataList) {
+      if (chunkMetadata.isEmpty()) {
+        continue;
+      }
+      if (chunkMetadata.get(0).getMeasurementUid().isEmpty()) {
+        return chunkMetadata;
+      }
+    }
+    return Collections.emptyList();
+  }
+
+  private List<IChunkMetadata> getVisibleMetadataListFromWriterByDeviceID(
+      QueryContext queryContext, IDeviceID deviceID) {
+    Map<String, List<Modification>> modifications =
+        queryContext.getDeviceModifications(tsFileResource, deviceID);

Review Comment:
   previous processing is also in DataRegion.query.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to