This is an automated email from the ASF dual-hosted git repository.
rong 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 d506eb78cb4 Load: Update TsFile Resource when
enable_auto_create_schema and verify schema are FALSE in Analysis Stage (#12525)
d506eb78cb4 is described below
commit d506eb78cb4326f8fdca81d4b76bd3d9add8a21f
Author: Itami Sho <[email protected]>
AuthorDate: Tue May 14 19:55:50 2024 +0800
Load: Update TsFile Resource when enable_auto_create_schema and verify
schema are FALSE in Analysis Stage (#12525)
Co-authored-by: Steve Yurong Su <[email protected]>
---
.../plan/analyze/LoadTsfileAnalyzer.java | 39 ++++++++++++----------
1 file changed, 22 insertions(+), 17 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/LoadTsfileAnalyzer.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/LoadTsfileAnalyzer.java
index feb6c92bade..5506c0d0069 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/LoadTsfileAnalyzer.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/LoadTsfileAnalyzer.java
@@ -209,8 +209,6 @@ public class LoadTsfileAnalyzer {
final TsFileSequenceReaderTimeseriesMetadataIterator
timeseriesMetadataIterator =
new TsFileSequenceReaderTimeseriesMetadataIterator(reader, true, 1);
- long writePointCount = 0;
-
// construct tsfile resource
final TsFileResource tsFileResource = new TsFileResource(tsFile);
if (!tsFileResource.resourceFileExists()) {
@@ -221,27 +219,34 @@ public class LoadTsfileAnalyzer {
tsFileResource.deserialize();
}
- // auto create or verify schema
- if (IoTDBDescriptor.getInstance().getConfig().isAutoCreateSchemaEnabled()
- || loadTsFileStatement.isVerifySchema()) {
- // check if the tsfile is empty
- if (!timeseriesMetadataIterator.hasNext()) {
- LOGGER.warn("device2TimeseriesMetadata is empty, because maybe the
tsfile is empty");
- return;
- }
+ // check if the tsfile is empty
+ if (!timeseriesMetadataIterator.hasNext()) {
+ LOGGER.warn("device2TimeseriesMetadata is empty, because maybe the
tsfile is empty");
+ return;
+ }
- while (timeseriesMetadataIterator.hasNext()) {
- Map<IDeviceID, List<TimeseriesMetadata>> device2TimeseriesMetadata =
- timeseriesMetadataIterator.next();
+ long writePointCount = 0;
+
+ final boolean isAutoCreateSchemaOrVerifySchemaEnabled =
+ IoTDBDescriptor.getInstance().getConfig().isAutoCreateSchemaEnabled()
+ || loadTsFileStatement.isVerifySchema();
+ while (timeseriesMetadataIterator.hasNext()) {
+ final Map<IDeviceID, List<TimeseriesMetadata>>
device2TimeseriesMetadata =
+ timeseriesMetadataIterator.next();
+ if (isAutoCreateSchemaOrVerifySchemaEnabled) {
schemaAutoCreatorAndVerifier.autoCreateAndVerify(reader,
device2TimeseriesMetadata);
+ }
- if (!tsFileResource.resourceFileExists()) {
-
TsFileResourceUtils.updateTsFileResource(device2TimeseriesMetadata,
tsFileResource);
- }
- writePointCount += getWritePointCount(device2TimeseriesMetadata);
+ if (!tsFileResource.resourceFileExists()) {
+ TsFileResourceUtils.updateTsFileResource(device2TimeseriesMetadata,
tsFileResource);
}
+ // TODO: how to get the correct write point count when
+ // !isAutoCreateSchemaOrVerifySchemaEnabled
+ writePointCount += getWritePointCount(device2TimeseriesMetadata);
+ }
+ if (isAutoCreateSchemaOrVerifySchemaEnabled) {
schemaAutoCreatorAndVerifier.flushAndClearDeviceIsAlignedCacheIfNecessary();
}