SilverNarcissus commented on a change in pull request #1732:
URL: https://github.com/apache/incubator-iotdb/pull/1732#discussion_r495517249



##########
File path: 
server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
##########
@@ -1443,13 +1443,15 @@ private void logDeletion(long startTime, long endTime, 
PartialPath deviceId, Str
 
   private void deleteDataInFiles(Collection<TsFileResource> 
tsFileResourceList, Deletion deletion,
       List<ModificationFile> updatedModFiles)
-      throws IOException {
-    String deviceId = deletion.getDevice();
+          throws IOException, MetadataException {
     for (TsFileResource tsFileResource : tsFileResourceList) {
-      if (!tsFileResource.containsDevice(deviceId) ||
-          deletion.getEndTime() < tsFileResource.getStartTime(deviceId) ||
-          deletion.getStartTime() > 
tsFileResource.getOrDefaultEndTime(deviceId, Long.MAX_VALUE)) {
-        continue;
+      for (PartialPath p : 
IoTDB.metaManager.getAllTimeseriesPath(deletion.getPath())) {
+        String deviceId = p.getDevice();
+        if (!tsFileResource.containsDevice(deviceId) ||
+                deletion.getEndTime() < tsFileResource.getStartTime(deviceId) 
||
+                deletion.getStartTime() > 
tsFileResource.getOrDefaultEndTime(deviceId, Long.MAX_VALUE)) {
+          continue;
+        }

Review comment:
       I think you also write every mod record into tsfile resource's mod file. 
In jira, you said that 
   ```
   I will maintain a global modification file for one storage group. When 
query, the executor will check the file to filter the series.
   ```
   Could you explain that?   Thanks~

##########
File path: 
server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
##########
@@ -1378,26 +1375,30 @@ public void delete(PartialPath deviceId, String 
measurementId, long startTime, l
     List<ModificationFile> updatedModFiles = new ArrayList<>();
 
     try {
-      Long lastUpdateTime = null;
-      for (Map<String, Long> latestTimeMap : latestTimeForEachDevice.values()) 
{
-        Long curTime = latestTimeMap.get(deviceId.getFullPath());
-        if (curTime != null && (lastUpdateTime == null || lastUpdateTime < 
curTime)) {
-          lastUpdateTime = curTime;
+      for (PartialPath p : IoTDB.metaManager.getAllTimeseriesPath(path)) {
+        PartialPath deviceId = p.getDevicePath();
+        String measurementId = p.getMeasurement();
+        Long lastUpdateTime = null;
+        for (Map<String, Long> latestTimeMap : 
latestTimeForEachDevice.values()) {
+          Long curTime = latestTimeMap.get(deviceId.getFullPath());
+          if (curTime != null && (lastUpdateTime == null || lastUpdateTime < 
curTime)) {
+            lastUpdateTime = curTime;
+          }
         }
-      }
-
-      // There is no tsfile data, the delete operation is invalid
-      if (lastUpdateTime == null) {
-        logger.debug("No device {} in SG {}, deletion invalid", deviceId, 
storageGroupName);
-        return;
+        // There is no tsfile data, the delete operation is invalid
+        if (lastUpdateTime == null) {
+          logger.debug("No device {} in SG {}, deletion invalid", deviceId, 
storageGroupName);
+          return;
+        }
+        // delete Last cache record if necessary
+        tryToDeleteLastCache(deviceId, measurementId, startTime, endTime);
       }
 
       // write log to impacted working TsFileProcessors
-      logDeletion(startTime, endTime, deviceId, measurementId);
-      // delete Last cache record if necessary
-      tryToDeleteLastCache(deviceId, measurementId, startTime, endTime);
-      Deletion deletion = new Deletion(deviceId.concatNode(measurementId),
-          MERGE_MOD_START_VERSION_NUM, startTime, endTime);
+      // TODO rewrite logDeletion

Review comment:
       Have you finish the TODO?




----------------------------------------------------------------
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.

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


Reply via email to