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());