This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new f38f3f6a0eb Remove redundant new Path in query process
f38f3f6a0eb is described below

commit f38f3f6a0eb1f3d5e0ffe6d82823d3da73e7629a
Author: Weihao Li <[email protected]>
AuthorDate: Fri Jul 28 13:32:16 2023 +0800

    Remove redundant new Path in query process
---
 .../buffer/TimeSeriesMetadataCache.java            | 12 ++++----
 .../iotdb/tsfile/read/TsFileSequenceReader.java    | 36 +++++++++++++---------
 .../tsfile/read/TimeSeriesMetadataReadTest.java    |  6 ++--
 3 files changed, 32 insertions(+), 22 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/TimeSeriesMetadataCache.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/TimeSeriesMetadataCache.java
index 9141ba66196..5092b19fc52 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/TimeSeriesMetadataCache.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/TimeSeriesMetadataCache.java
@@ -27,10 +27,10 @@ import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet;
 import org.apache.iotdb.db.queryengine.metric.TimeSeriesMetadataCacheMetrics;
 import 
org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager;
+import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
 import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
 import org.apache.iotdb.tsfile.file.metadata.TimeseriesMetadata;
 import org.apache.iotdb.tsfile.read.TsFileSequenceReader;
-import org.apache.iotdb.tsfile.read.common.Path;
 import org.apache.iotdb.tsfile.utils.BloomFilter;
 import org.apache.iotdb.tsfile.utils.FilePathUtils;
 import org.apache.iotdb.tsfile.utils.Pair;
@@ -138,8 +138,7 @@ public class TimeSeriesMetadataCache {
           return null;
         }
         TimeseriesMetadata timeseriesMetadata =
-            reader.readTimeseriesMetadata(
-                new Path(key.device, key.measurement, true), ignoreNotExists);
+            reader.readTimeseriesMetadata(key.device, key.measurement, 
ignoreNotExists);
         return (timeseriesMetadata == null || 
timeseriesMetadata.getStatistics().getCount() == 0)
             ? null
             : timeseriesMetadata;
@@ -161,12 +160,13 @@ public class TimeSeriesMetadataCache {
           if (timeseriesMetadata == null) {
             cacheHit = false;
 
-            Path path = new Path(key.device, key.measurement, true);
             // bloom filter part
             BloomFilter bloomFilter =
                 BloomFilterCache.getInstance()
                     .get(new 
BloomFilterCache.BloomFilterCacheKey(key.filePath), debug);
-            if (bloomFilter != null && 
!bloomFilter.contains(path.getFullPath())) {
+            if (bloomFilter != null
+                && !bloomFilter.contains(
+                    key.device + TsFileConstant.PATH_SEPARATOR + 
key.measurement)) {
               if (debug) {
                 DEBUG_LOGGER.info("TimeSeries meta data {} is filter by 
bloomFilter!", key);
               }
@@ -174,7 +174,7 @@ public class TimeSeriesMetadataCache {
             }
             TsFileSequenceReader reader = 
FileReaderManager.getInstance().get(key.filePath, true);
             List<TimeseriesMetadata> timeSeriesMetadataList =
-                reader.readTimeseriesMetadata(path, allSensors);
+                reader.readTimeseriesMetadata(key.device, key.measurement, 
allSensors);
             // put TimeSeriesMetadata of all sensors used in this read into 
cache
             for (TimeseriesMetadata metadata : timeSeriesMetadataList) {
               TimeSeriesMetadataCacheKey k =
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java
index 56602d07b09..d9de94a0e0e 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/TsFileSequenceReader.java
@@ -354,17 +354,25 @@ public class TsFileSequenceReader implements 
AutoCloseable {
     return deviceMetadata;
   }
 
+  /** @deprecated Use {@link #readTimeseriesMetadata(String, String, boolean)} 
instead. */
+  @Deprecated
+  @SuppressWarnings("java:S1133") // suppress warn of deprecation
   public TimeseriesMetadata readTimeseriesMetadata(Path path, boolean 
ignoreNotExists)
       throws IOException {
+    return readTimeseriesMetadata(path.getDevice(), path.getMeasurement(), 
ignoreNotExists);
+  }
+
+  public TimeseriesMetadata readTimeseriesMetadata(
+      String device, String measurement, boolean ignoreNotExists) throws 
IOException {
     readFileMetadata();
     MetadataIndexNode deviceMetadataIndexNode = 
tsFileMetaData.getMetadataIndex();
     Pair<MetadataIndexEntry, Long> metadataIndexPair =
-        getMetadataAndEndOffset(deviceMetadataIndexNode, path.getDevice(), 
true, true);
+        getMetadataAndEndOffset(deviceMetadataIndexNode, device, true, true);
     if (metadataIndexPair == null) {
       if (ignoreNotExists) {
         return null;
       }
-      throw new IOException("Device {" + path.getDevice() + "} is not in 
tsFileMetaData");
+      throw new IOException("Device {" + device + "} is not in 
tsFileMetaData");
     }
     ByteBuffer buffer = readData(metadataIndexPair.left.getOffset(), 
metadataIndexPair.right);
     MetadataIndexNode metadataIndexNode = deviceMetadataIndexNode;
@@ -375,8 +383,7 @@ public class TsFileSequenceReader implements AutoCloseable {
         logger.error(METADATA_INDEX_NODE_DESERIALIZE_ERROR, file);
         throw e;
       }
-      metadataIndexPair =
-          getMetadataAndEndOffset(metadataIndexNode, path.getMeasurement(), 
false, false);
+      metadataIndexPair = getMetadataAndEndOffset(metadataIndexNode, 
measurement, false, false);
     }
     if (metadataIndexPair == null) {
       return null;
@@ -393,8 +400,7 @@ public class TsFileSequenceReader implements AutoCloseable {
       }
     }
     // return null if path does not exist in the TsFile
-    int searchResult =
-        binarySearchInTimeseriesMetadataList(timeseriesMetadataList, 
path.getMeasurement());
+    int searchResult = 
binarySearchInTimeseriesMetadataList(timeseriesMetadataList, measurement);
     return searchResult >= 0 ? timeseriesMetadataList.get(searchResult) : null;
   }
 
@@ -456,9 +462,10 @@ public class TsFileSequenceReader implements AutoCloseable 
{
   }
 
   /* Find the leaf node that contains path, return all the sensors in that 
leaf node which are also in allSensors set */
-  public List<TimeseriesMetadata> readTimeseriesMetadata(Path path, 
Set<String> allSensors)
-      throws IOException {
-    Pair<MetadataIndexEntry, Long> metadataIndexPair = 
getLeafMetadataIndexPair(path);
+  public List<TimeseriesMetadata> readTimeseriesMetadata(
+      String device, String measurement, Set<String> allSensors) throws 
IOException {
+    Pair<MetadataIndexEntry, Long> metadataIndexPair =
+        getLeafMetadataIndexPair(device, measurement);
     if (metadataIndexPair == null) {
       return Collections.emptyList();
     }
@@ -482,11 +489,12 @@ public class TsFileSequenceReader implements 
AutoCloseable {
   }
 
   /* Get leaf MetadataIndexPair which contains path */
-  private Pair<MetadataIndexEntry, Long> getLeafMetadataIndexPair(Path path) 
throws IOException {
+  private Pair<MetadataIndexEntry, Long> getLeafMetadataIndexPair(String 
device, String measurement)
+      throws IOException {
     readFileMetadata();
     MetadataIndexNode deviceMetadataIndexNode = 
tsFileMetaData.getMetadataIndex();
     Pair<MetadataIndexEntry, Long> metadataIndexPair =
-        getMetadataAndEndOffset(deviceMetadataIndexNode, path.getDevice(), 
true, true);
+        getMetadataAndEndOffset(deviceMetadataIndexNode, device, true, true);
     if (metadataIndexPair == null) {
       return null;
     }
@@ -499,8 +507,7 @@ public class TsFileSequenceReader implements AutoCloseable {
         logger.error(METADATA_INDEX_NODE_DESERIALIZE_ERROR, file);
         throw e;
       }
-      metadataIndexPair =
-          getMetadataAndEndOffset(metadataIndexNode, path.getMeasurement(), 
false, false);
+      metadataIndexPair = getMetadataAndEndOffset(metadataIndexNode, 
measurement, false, false);
     }
     return metadataIndexPair;
   }
@@ -1912,7 +1919,8 @@ public class TsFileSequenceReader implements 
AutoCloseable {
    */
   public List<ChunkMetadata> getChunkMetadataList(Path path, boolean 
ignoreNotExists)
       throws IOException {
-    TimeseriesMetadata timeseriesMetaData = readTimeseriesMetadata(path, 
ignoreNotExists);
+    TimeseriesMetadata timeseriesMetaData =
+        readTimeseriesMetadata(path.getDevice(), path.getMeasurement(), 
ignoreNotExists);
     if (timeseriesMetaData == null) {
       return Collections.emptyList();
     }
diff --git 
a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TimeSeriesMetadataReadTest.java
 
b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TimeSeriesMetadataReadTest.java
index bb21e7829a8..a2b971d74cf 100644
--- 
a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TimeSeriesMetadataReadTest.java
+++ 
b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/TimeSeriesMetadataReadTest.java
@@ -72,7 +72,8 @@ public class TimeSeriesMetadataReadTest {
     // the Max Degree Of Index Node is set to be 3, so the leaf node should 
only contains 3 sensors
     // s4 should not be returned as result
     set.add("s4");
-    List<TimeseriesMetadata> timeseriesMetadataList = 
reader.readTimeseriesMetadata(path, set);
+    List<TimeseriesMetadata> timeseriesMetadataList =
+        reader.readTimeseriesMetadata(path.getDevice(), path.getMeasurement(), 
set);
     Assert.assertEquals(3, timeseriesMetadataList.size());
     for (int i = 1; i <= timeseriesMetadataList.size(); i++) {
       Assert.assertEquals("s" + i, timeseriesMetadataList.get(i - 
1).getMeasurementId());
@@ -85,7 +86,8 @@ public class TimeSeriesMetadataReadTest {
     // this is a fake one, this file doesn't contain this measurement
     // so the result is not supposed to contain this measurement's timeseries 
metadata
     set.add("s8");
-    timeseriesMetadataList = reader.readTimeseriesMetadata(path, set);
+    timeseriesMetadataList =
+        reader.readTimeseriesMetadata(path.getDevice(), path.getMeasurement(), 
set);
     Assert.assertEquals(2, timeseriesMetadataList.size());
     for (int i = 5; i < 7; i++) {
       Assert.assertEquals("s" + i, timeseriesMetadataList.get(i - 
5).getMeasurementId());

Reply via email to