You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by zy...@apache.org on 2023/03/15 01:14:59 UTC

[iotdb] 05/06: [To rel/1.1] [IOTDB-5668] fix loading the tsfile which is from export-tsfile failed when the specified encoding type is different from default

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

zyk pushed a commit to branch rc/1.1.0
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 3f0c4a44c5f93bfe88c07db67e71959b3b2446f0
Author: Zhijia Cao <ca...@126.com>
AuthorDate: Tue Mar 14 20:49:04 2023 +0800

    [To rel/1.1] [IOTDB-5668] fix loading the tsfile which is from export-tsfile failed when the specified encoding type is different from default
---
 cli/src/main/java/org/apache/iotdb/tool/ExportTsFile.java      | 10 ++++++++++
 .../apache/iotdb/tsfile/write/schema/MeasurementSchema.java    |  8 ++++++++
 2 files changed, 18 insertions(+)

diff --git a/cli/src/main/java/org/apache/iotdb/tool/ExportTsFile.java b/cli/src/main/java/org/apache/iotdb/tool/ExportTsFile.java
index f6bb29aa99..afddac0c25 100644
--- a/cli/src/main/java/org/apache/iotdb/tool/ExportTsFile.java
+++ b/cli/src/main/java/org/apache/iotdb/tool/ExportTsFile.java
@@ -26,7 +26,9 @@ import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.Session;
 import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
+import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
 import org.apache.iotdb.tsfile.read.common.Field;
 import org.apache.iotdb.tsfile.read.common.Path;
@@ -312,6 +314,14 @@ public class ExportTsFile extends AbstractTsFileTool {
         }
         MeasurementSchema measurementSchema =
             new MeasurementSchema(path.getMeasurement(), tsDataType);
+
+        List<Field> seriesList =
+            session.executeQueryStatement("show timeseries " + column, timeout).next().getFields();
+
+        measurementSchema.setEncoding(
+            TSEncoding.valueOf(seriesList.get(4).getStringValue()).serialize());
+        measurementSchema.setCompressor(
+            CompressionType.valueOf(seriesList.get(5).getStringValue()).serialize());
         schemaMap.computeIfAbsent(deviceId, key -> new ArrayList<>()).add(measurementSchema);
       }
       List<Tablet> tabletList = new ArrayList<>();
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchema.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchema.java
index a1c243bad2..6e28339f86 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchema.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchema.java
@@ -428,4 +428,12 @@ public class MeasurementSchema
   public boolean containsSubMeasurement(String measurementId) {
     return this.measurementId.equals(measurementId);
   }
+
+  public void setEncoding(byte encoding) {
+    this.encoding = encoding;
+  }
+
+  public void setCompressor(byte compressor) {
+    this.compressor = compressor;
+  }
 }