You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ji...@apache.org on 2025/08/21 03:47:04 UTC

(iotdb) branch dev/1.3 updated (e0a90fbc49d -> 60d712e8d3e)

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

jiangtian pushed a change to branch dev/1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git


    from e0a90fbc49d Print measurement for putting buffer exceptions (#15873) (#16213)
     new 6a3b38d581b Add configs to set default compression for each data type (#16117)
     new 66c1bd6cbbb Fix that compression by type is not properly applied (#16211)
     new 60d712e8d3e Fix some capitalizations in config template (#16216)

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../iotdb/session/it/IoTDBSessionSimpleIT.java     | 335 ++++++++++++++++++---
 .../persistence/schema/TemplateTable.java          |   2 +-
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |  25 ++
 .../analyze/schema/AutoCreateSchemaExecutor.java   |  13 +-
 .../plan/analyze/schema/TemplateSchemaFetcher.java |   2 +-
 .../db/queryengine/plan/parser/ASTVisitor.java     |   8 +-
 .../metrics/IoTDBInternalLocalReporter.java        |   3 +-
 .../FirstBatchCompactionAlignedChunkWriter.java    |   3 +-
 .../conf/iotdb-system.properties.template          |  30 ++
 9 files changed, 375 insertions(+), 46 deletions(-)


(iotdb) 01/03: Add configs to set default compression for each data type (#16117)

Posted by ji...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jiangtian pushed a commit to branch dev/1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 6a3b38d581b2cbad09bd1d748f369458937adf44
Author: Jiang Tian <jt...@163.com>
AuthorDate: Thu Aug 7 12:28:30 2025 +0800

    Add configs to set default compression for each data type (#16117)
---
 .../iotdb/session/it/IoTDBSessionSimpleIT.java     | 157 ++++++++++++++++-----
 .../conf/iotdb-system.properties.template          |  30 ++++
 2 files changed, 152 insertions(+), 35 deletions(-)

diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSimpleIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSimpleIT.java
index a4b84bab7d3..b3a231f3f63 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSimpleIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSimpleIT.java
@@ -24,6 +24,7 @@ import org.apache.iotdb.db.it.utils.TestUtils;
 import org.apache.iotdb.db.protocol.thrift.OperationType;
 import org.apache.iotdb.isession.ISession;
 import org.apache.iotdb.isession.SessionDataSet;
+import org.apache.iotdb.isession.SessionDataSet.DataIterator;
 import org.apache.iotdb.it.env.EnvFactory;
 import org.apache.iotdb.it.framework.IoTDBTestRunner;
 import org.apache.iotdb.itbase.category.ClusterIT;
@@ -63,8 +64,10 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
+import java.nio.charset.StandardCharsets;
 import java.security.SecureRandom;
 import java.sql.Timestamp;
+import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -74,6 +77,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
@@ -214,7 +218,7 @@ public class IoTDBSessionSimpleIT {
       }
       fail();
     } catch (Exception e) {
-      Assert.assertTrue(e.getMessage().contains("data type of root.sg.d2.s2 is not consistent"));
+      assertTrue(e.getMessage().contains("data type of root.sg.d2.s2 is not consistent"));
     }
   }
 
@@ -707,7 +711,7 @@ public class IoTDBSessionSimpleIT {
         tablet.reset();
       }
     } catch (Exception e) {
-      Assert.assertTrue(e.getMessage().contains("Current system timestamp precision is ms"));
+      assertTrue(e.getMessage().contains("Current system timestamp precision is ms"));
     }
   }
 
@@ -735,7 +739,7 @@ public class IoTDBSessionSimpleIT {
         tablet.reset();
       }
     } catch (Exception e) {
-      Assert.assertTrue(e.getMessage().contains("Insertion contains duplicated measurement: s0"));
+      assertTrue(e.getMessage().contains("Insertion contains duplicated measurement: s0"));
     }
   }
 
@@ -1117,7 +1121,7 @@ public class IoTDBSessionSimpleIT {
           Boolean.TRUE);
       session.insertRecordsOfOneDevice("root.sg.d1", times, measurements, datatypes, values);
     } catch (Exception e) {
-      Assert.assertTrue(e.getMessage().contains("Insertion contains duplicated measurement: s2"));
+      assertTrue(e.getMessage().contains("Insertion contains duplicated measurement: s2"));
     }
   }
 
@@ -1172,7 +1176,7 @@ public class IoTDBSessionSimpleIT {
           Boolean.TRUE);
       session.insertRecords(devices, times, measurements, datatypes, values);
     } catch (Exception e) {
-      Assert.assertTrue(e.getMessage().contains("Insertion contains duplicated measurement: s2"));
+      assertTrue(e.getMessage().contains("Insertion contains duplicated measurement: s2"));
     }
   }
 
@@ -1204,11 +1208,11 @@ public class IoTDBSessionSimpleIT {
       try {
         session.insertRecords(devices, times, measurements, datatypes, values);
       } catch (Exception e) {
-        Assert.assertTrue(e.getMessage().contains("less than ttl time bound"));
+        assertTrue(e.getMessage().contains("less than ttl time bound"));
       }
       session.executeNonQueryStatement("unset ttl to root.sg.d1");
       SessionDataSet dataSet = session.executeQueryStatement("select * from root.sg.d1");
-      Assert.assertFalse(dataSet.hasNext());
+      assertFalse(dataSet.hasNext());
     }
   }
 
@@ -1846,14 +1850,14 @@ public class IoTDBSessionSimpleIT {
         session.createDatabase("");
         fail();
       } catch (StatementExecutionException e) {
-        Assert.assertTrue(e.getMessage().contains(" is not a legal path"));
+        assertTrue(e.getMessage().contains(" is not a legal path"));
       }
 
       try {
         session.deleteDatabases(Arrays.asList("root.db", ""));
         fail();
       } catch (StatementExecutionException e) {
-        Assert.assertTrue(e.getMessage().contains(" is not a legal path"));
+        assertTrue(e.getMessage().contains(" is not a legal path"));
       }
 
       session.deleteDatabase("root.db");
@@ -2096,36 +2100,35 @@ public class IoTDBSessionSimpleIT {
       session.insertTablet(tablet);
 
       try (SessionDataSet dataSet = session.executeQueryStatement("select * from root.sg.d1")) {
-        SessionDataSet.DataIterator iterator = dataSet.iterator();
+        DataIterator iterator = dataSet.iterator();
         int count = 0;
         while (iterator.next()) {
           count++;
-          Assert.assertFalse(iterator.isNull("root.sg.d1.s1"));
-          Assert.assertEquals(1, iterator.getInt("root.sg.d1.s1"));
-          Assert.assertFalse(iterator.isNull("root.sg.d1.s2"));
-          Assert.assertEquals(1L, iterator.getLong("root.sg.d1.s2"));
-          Assert.assertFalse(iterator.isNull("root.sg.d1.s3"));
-          Assert.assertEquals(0, iterator.getFloat("root.sg.d1.s3"), 0.01);
-          Assert.assertFalse(iterator.isNull("root.sg.d1.s4"));
-          Assert.assertEquals(0, iterator.getDouble("root.sg.d1.s4"), 0.01);
-          Assert.assertFalse(iterator.isNull("root.sg.d1.s5"));
-          Assert.assertEquals("text_value", iterator.getString("root.sg.d1.s5"));
-          Assert.assertFalse(iterator.isNull("root.sg.d1.s6"));
+          assertFalse(iterator.isNull("root.sg.d1.s1"));
+          assertEquals(1, iterator.getInt("root.sg.d1.s1"));
+          assertFalse(iterator.isNull("root.sg.d1.s2"));
+          assertEquals(1L, iterator.getLong("root.sg.d1.s2"));
+          assertFalse(iterator.isNull("root.sg.d1.s3"));
+          assertEquals(0, iterator.getFloat("root.sg.d1.s3"), 0.01);
+          assertFalse(iterator.isNull("root.sg.d1.s4"));
+          assertEquals(0, iterator.getDouble("root.sg.d1.s4"), 0.01);
+          assertFalse(iterator.isNull("root.sg.d1.s5"));
+          assertEquals("text_value", iterator.getString("root.sg.d1.s5"));
+          assertFalse(iterator.isNull("root.sg.d1.s6"));
           assertTrue(iterator.getBoolean("root.sg.d1.s6"));
-          Assert.assertFalse(iterator.isNull("root.sg.d1.s7"));
-          Assert.assertEquals(new Timestamp(1), iterator.getTimestamp("root.sg.d1.s7"));
-          Assert.assertFalse(iterator.isNull("root.sg.d1.s8"));
-          Assert.assertEquals(new Binary(new byte[] {1}), iterator.getBlob("root.sg.d1.s8"));
-          Assert.assertFalse(iterator.isNull("root.sg.d1.s9"));
-          Assert.assertEquals("string_value", iterator.getString("root.sg.d1.s9"));
-          Assert.assertFalse(iterator.isNull("root.sg.d1.s10"));
-          Assert.assertEquals(
-              DateUtils.parseIntToLocalDate(20250403), iterator.getDate("root.sg.d1.s10"));
-          Assert.assertTrue(iterator.isNull("root.sg.d1.s11"));
-          Assert.assertNull(iterator.getTimestamp("root.sg.d1.s11"));
-
-          Assert.assertEquals(new Timestamp(0), iterator.getTimestamp("Time"));
-          Assert.assertFalse(iterator.isNull("Time"));
+          assertFalse(iterator.isNull("root.sg.d1.s7"));
+          assertEquals(new Timestamp(1), iterator.getTimestamp("root.sg.d1.s7"));
+          assertFalse(iterator.isNull("root.sg.d1.s8"));
+          assertEquals(new Binary(new byte[] {1}), iterator.getBlob("root.sg.d1.s8"));
+          assertFalse(iterator.isNull("root.sg.d1.s9"));
+          assertEquals("string_value", iterator.getString("root.sg.d1.s9"));
+          assertFalse(iterator.isNull("root.sg.d1.s10"));
+          assertEquals(DateUtils.parseIntToLocalDate(20250403), iterator.getDate("root.sg.d1.s10"));
+          assertTrue(iterator.isNull("root.sg.d1.s11"));
+          assertNull(iterator.getTimestamp("root.sg.d1.s11"));
+
+          assertEquals(new Timestamp(0), iterator.getTimestamp("Time"));
+          assertFalse(iterator.isNull("Time"));
         }
         Assert.assertEquals(tablet.rowSize, count);
       }
@@ -2146,4 +2149,88 @@ public class IoTDBSessionSimpleIT {
                   Collections.singletonList(1L)));
     }
   }
+
+  @Test
+  public void testAlterDefaultCompression()
+      throws IoTDBConnectionException, StatementExecutionException {
+    try (ISession session = EnvFactory.getEnv().getSessionConnection()) {
+      List<TSDataType> types =
+          Arrays.asList(
+              TSDataType.BOOLEAN,
+              TSDataType.INT32,
+              TSDataType.DATE,
+              TSDataType.INT64,
+              TSDataType.TIMESTAMP,
+              TSDataType.FLOAT,
+              TSDataType.DOUBLE,
+              TSDataType.TEXT,
+              TSDataType.STRING,
+              TSDataType.BLOB);
+      List<String> measurements =
+          types.stream().map(dataType -> "__" + dataType.toString()).collect(Collectors.toList());
+      List<Object> values =
+          Arrays.asList(
+              false,
+              1,
+              LocalDate.of(1000, 1, 1),
+              1L,
+              1L,
+              1.0f,
+              1.0,
+              new Binary("1".getBytes(StandardCharsets.UTF_8)),
+              new Binary("1".getBytes(StandardCharsets.UTF_8)),
+              new Binary("1".getBytes(StandardCharsets.UTF_8)));
+      String device1 = "root.test.d1";
+      session.insertRecord(device1, 0, measurements, types, values);
+
+      try (SessionDataSet dataSet =
+          session.executeQueryStatement("SHOW TIMESERIES root.test.d1.**")) {
+        int compressionIndex = dataSet.getColumnNames().indexOf("Compression");
+        while (dataSet.hasNext()) {
+          RowRecord rec = dataSet.next();
+          Field compressionField = rec.getFields().get(compressionIndex);
+          assertEquals("LZ4", compressionField.getStringValue());
+        }
+      }
+
+      for (TSDataType type : types) {
+        String configName = null;
+        switch (type) {
+          case INT32:
+          case INT64:
+          case FLOAT:
+          case DOUBLE:
+          case TEXT:
+          case BOOLEAN:
+            configName = type.name().toLowerCase();
+            break;
+          case STRING:
+          case BLOB:
+            configName = "text";
+            break;
+          case DATE:
+            configName = "int32";
+            break;
+          case TIMESTAMP:
+            configName = "int64";
+            break;
+        }
+        session.executeNonQueryStatement(
+            String.format("SET CONFIGURATION '%s_compressor'='GZIP'", configName));
+      }
+
+      String device2 = "root.test.d1";
+      session.insertRecord(device2, 0, measurements, types, values);
+
+      try (SessionDataSet dataSet =
+          session.executeQueryStatement("SHOW TIMESERIES root.test.d2.**")) {
+        int compressionIndex = dataSet.getColumnNames().indexOf("Compression");
+        while (dataSet.hasNext()) {
+          RowRecord rec = dataSet.next();
+          Field compressionField = rec.getFields().get(compressionIndex);
+          assertEquals("GZIP", compressionField.getStringValue());
+        }
+      }
+    }
+  }
 }
diff --git a/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template b/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
index 1824ab3e750..417198fce0e 100644
--- a/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
+++ b/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
@@ -968,6 +968,36 @@ default_double_encoding=GORILLA
 # Datatype: TSEncoding
 default_text_encoding=PLAIN
 
+# BOOLEAN compression when creating schema automatically is enabled
+# effectiveMode: hot_reload
+# Datatype: TSEncoding
+boolean_compressor=lz4
+
+# INT32/DATE compression when creating schema automatically is enabled
+# effectiveMode: hot_reload
+# Datatype: TSEncoding
+int32_compressor=lz4
+
+# INT64/TIMESTAMP compression when creating schema automatically is enabled
+# effectiveMode: hot_reload
+# Datatype: TSEncoding
+int64_compressor=lz4
+
+# FLOAT compression when creating schema automatically is enabled
+# effectiveMode: hot_reload
+# Datatype: TSEncoding
+float_compressor=lz4
+
+# DOUBLE compression when creating schema automatically is enabled
+# effectiveMode: hot_reload
+# Datatype: TSEncoding
+double_compressor=lz4
+
+# TEXT/BINARY/BLOB compression when creating schema automatically is enabled
+# effectiveMode: hot_reload
+# Datatype: TSEncoding
+text_compressor=lz4
+
 ####################
 ### Query Configurations
 ####################


(iotdb) 02/03: Fix that compression by type is not properly applied (#16211)

Posted by ji...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jiangtian pushed a commit to branch dev/1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 66c1bd6cbbb6aed58b85f5b177b4093c0cf0aba6
Author: Jiang Tian <jt...@163.com>
AuthorDate: Wed Aug 20 16:39:02 2025 +0800

    Fix that compression by type is not properly applied (#16211)
---
 .../iotdb/session/it/IoTDBSessionSimpleIT.java     | 180 ++++++++++++++++++++-
 .../persistence/schema/TemplateTable.java          |   2 +-
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |  25 +++
 .../analyze/schema/AutoCreateSchemaExecutor.java   |  13 +-
 .../plan/analyze/schema/TemplateSchemaFetcher.java |   2 +-
 .../db/queryengine/plan/parser/ASTVisitor.java     |   8 +-
 .../metrics/IoTDBInternalLocalReporter.java        |   3 +-
 .../FirstBatchCompactionAlignedChunkWriter.java    |   3 +-
 8 files changed, 224 insertions(+), 12 deletions(-)

diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSimpleIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSimpleIT.java
index b3a231f3f63..e2ddbcdf259 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSimpleIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSimpleIT.java
@@ -2153,6 +2153,7 @@ public class IoTDBSessionSimpleIT {
   @Test
   public void testAlterDefaultCompression()
       throws IoTDBConnectionException, StatementExecutionException {
+    // auto-create
     try (ISession session = EnvFactory.getEnv().getSessionConnection()) {
       List<TSDataType> types =
           Arrays.asList(
@@ -2219,7 +2220,7 @@ public class IoTDBSessionSimpleIT {
             String.format("SET CONFIGURATION '%s_compressor'='GZIP'", configName));
       }
 
-      String device2 = "root.test.d1";
+      String device2 = "root.test.d2";
       session.insertRecord(device2, 0, measurements, types, values);
 
       try (SessionDataSet dataSet =
@@ -2232,5 +2233,182 @@ public class IoTDBSessionSimpleIT {
         }
       }
     }
+
+    // manual create
+    try (ISession session = EnvFactory.getEnv().getSessionConnection()) {
+      List<TSDataType> types =
+          Arrays.asList(
+              TSDataType.BOOLEAN,
+              TSDataType.INT32,
+              TSDataType.DATE,
+              TSDataType.INT64,
+              TSDataType.TIMESTAMP,
+              TSDataType.FLOAT,
+              TSDataType.DOUBLE,
+              TSDataType.TEXT,
+              TSDataType.STRING,
+              TSDataType.BLOB);
+      List<String> measurements =
+          types.stream().map(dataType -> "__" + dataType.toString()).collect(Collectors.toList());
+
+      String device3 = "root.test.d3";
+      for (int i = 0; i < types.size(); i++) {
+        session.executeNonQueryStatement(
+            String.format(
+                "CREATE TIMESERIES %s.%s WITH DATATYPE=%s",
+                device3, measurements.get(i), types.get(i)));
+      }
+
+      try (SessionDataSet dataSet =
+          session.executeQueryStatement("SHOW TIMESERIES root.test.d3.**")) {
+        int compressionIndex = dataSet.getColumnNames().indexOf("Compression");
+        while (dataSet.hasNext()) {
+          RowRecord rec = dataSet.next();
+          Field compressionField = rec.getFields().get(compressionIndex);
+          assertEquals("GZIP", compressionField.getStringValue());
+        }
+      }
+
+      for (TSDataType type : types) {
+        String configName = null;
+        switch (type) {
+          case INT32:
+          case INT64:
+          case FLOAT:
+          case DOUBLE:
+          case TEXT:
+          case BOOLEAN:
+            configName = type.name().toLowerCase();
+            break;
+          case STRING:
+          case BLOB:
+            configName = "text";
+            break;
+          case DATE:
+            configName = "int32";
+            break;
+          case TIMESTAMP:
+            configName = "int64";
+            break;
+        }
+        session.executeNonQueryStatement(
+            String.format("SET CONFIGURATION '%s_compressor'='LZ4'", configName));
+      }
+
+      String device4 = "root.test.d4";
+      for (int i = 0; i < types.size(); i++) {
+        session.executeNonQueryStatement(
+            String.format(
+                "CREATE TIMESERIES %s.%s WITH DATATYPE=%s",
+                device4, measurements.get(i), types.get(i)));
+      }
+
+      try (SessionDataSet dataSet =
+          session.executeQueryStatement("SHOW TIMESERIES root.test.d4.**")) {
+        int compressionIndex = dataSet.getColumnNames().indexOf("Compression");
+        while (dataSet.hasNext()) {
+          RowRecord rec = dataSet.next();
+          Field compressionField = rec.getFields().get(compressionIndex);
+          assertEquals("LZ4", compressionField.getStringValue());
+        }
+      }
+    }
+
+    // template
+    try (ISession session = EnvFactory.getEnv().getSessionConnection()) {
+      List<TSDataType> types =
+          Arrays.asList(
+              TSDataType.BOOLEAN,
+              TSDataType.INT32,
+              TSDataType.DATE,
+              TSDataType.INT64,
+              TSDataType.TIMESTAMP,
+              TSDataType.FLOAT,
+              TSDataType.DOUBLE,
+              TSDataType.TEXT,
+              TSDataType.STRING,
+              TSDataType.BLOB);
+      List<String> measurements =
+          types.stream().map(dataType -> "__" + dataType.toString()).collect(Collectors.toList());
+      List<Object> values =
+          Arrays.asList(
+              false,
+              1,
+              LocalDate.of(1000, 1, 1),
+              1L,
+              1L,
+              1.0f,
+              1.0,
+              new Binary("1".getBytes(StandardCharsets.UTF_8)),
+              new Binary("1".getBytes(StandardCharsets.UTF_8)),
+              new Binary("1".getBytes(StandardCharsets.UTF_8)));
+
+      String createTemplateSql = "CREATE DEVICE TEMPLATE t1 (";
+      for (int i = 0; i < types.size(); i++) {
+        createTemplateSql += measurements.get(i) + " " + types.get(i).name();
+        if (i != types.size() - 1) {
+          createTemplateSql += ",";
+        }
+      }
+      createTemplateSql += ")";
+      session.executeNonQueryStatement(createTemplateSql);
+
+      session.executeNonQueryStatement("SET DEVICE TEMPLATE t1 TO root.test.d5");
+      String device5 = "root.test.d5";
+      session.insertRecord(device5, 0, measurements, types, values);
+
+      try (SessionDataSet dataSet =
+          session.executeQueryStatement("SHOW TIMESERIES root.test.d5.**")) {
+        int compressionIndex = dataSet.getColumnNames().indexOf("Compression");
+        while (dataSet.hasNext()) {
+          RowRecord rec = dataSet.next();
+          Field compressionField = rec.getFields().get(compressionIndex);
+          assertEquals("LZ4", compressionField.getStringValue());
+        }
+      }
+
+      for (TSDataType type : types) {
+        String configName = null;
+        switch (type) {
+          case INT32:
+          case INT64:
+          case FLOAT:
+          case DOUBLE:
+          case TEXT:
+          case BOOLEAN:
+            configName = type.name().toLowerCase();
+            break;
+          case STRING:
+          case BLOB:
+            configName = "text";
+            break;
+          case DATE:
+            configName = "int32";
+            break;
+          case TIMESTAMP:
+            configName = "int64";
+            break;
+        }
+        session.executeNonQueryStatement(
+            String.format("SET CONFIGURATION '%s_compressor'='GZIP'", configName));
+      }
+
+      createTemplateSql = createTemplateSql.replace("t1", "t2");
+      session.executeNonQueryStatement(createTemplateSql);
+      session.executeNonQueryStatement("SET DEVICE TEMPLATE t2 TO root.test.d6");
+
+      String device6 = "root.test.d6";
+      session.insertRecord(device6, 0, measurements, types, values);
+
+      try (SessionDataSet dataSet =
+          session.executeQueryStatement("SHOW TIMESERIES root.test.d6.**")) {
+        int compressionIndex = dataSet.getColumnNames().indexOf("Compression");
+        while (dataSet.hasNext()) {
+          RowRecord rec = dataSet.next();
+          Field compressionField = rec.getFields().get(compressionIndex);
+          assertEquals("GZIP", compressionField.getStringValue());
+        }
+      }
+    }
   }
 }
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/TemplateTable.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/TemplateTable.java
index 201e6eb4d2e..23cde4e9447 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/TemplateTable.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/TemplateTable.java
@@ -156,7 +156,7 @@ public class TemplateTable {
               dataTypeList.get(i),
               encodingList == null ? getDefaultEncoding(dataTypeList.get(i)) : encodingList.get(i),
               compressionTypeList == null
-                  ? TSFileDescriptor.getInstance().getConfig().getCompressor()
+                  ? TSFileDescriptor.getInstance().getConfig().getCompressor(dataTypeList.get(i))
                   : compressionTypeList.get(i));
         } else {
           if (!measurementSchema.getType().equals(dataTypeList.get(i))
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index 042e7969bf7..b8b29fad99c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -1791,6 +1791,31 @@ public class IoTDBDescriptor {
                     "max_tsblock_line_number",
                     ConfigurationFileUtils.getConfigurationDefaultValue(
                         "max_tsblock_line_number"))));
+
+    String booleanCompressor = properties.getProperty("boolean_compressor");
+    if (booleanCompressor != null) {
+      TSFileDescriptor.getInstance().getConfig().setBooleanCompression(booleanCompressor);
+    }
+    String int32Compressor = properties.getProperty("int32_compressor");
+    if (int32Compressor != null) {
+      TSFileDescriptor.getInstance().getConfig().setInt32Compression(int32Compressor);
+    }
+    String int64Compressor = properties.getProperty("int64_compressor");
+    if (int64Compressor != null) {
+      TSFileDescriptor.getInstance().getConfig().setInt64Compression(int64Compressor);
+    }
+    String floatCompressor = properties.getProperty("float_compressor");
+    if (floatCompressor != null) {
+      TSFileDescriptor.getInstance().getConfig().setFloatCompression(floatCompressor);
+    }
+    String doubleCompressor = properties.getProperty("double_compressor");
+    if (doubleCompressor != null) {
+      TSFileDescriptor.getInstance().getConfig().setDoubleCompression(doubleCompressor);
+    }
+    String textCompressor = properties.getProperty("text_compressor");
+    if (textCompressor != null) {
+      TSFileDescriptor.getInstance().getConfig().setTextCompression(textCompressor);
+    }
   }
 
   // Mqtt related
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/AutoCreateSchemaExecutor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/AutoCreateSchemaExecutor.java
index 38d0f8942e5..0cfa03dbda4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/AutoCreateSchemaExecutor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/AutoCreateSchemaExecutor.java
@@ -124,7 +124,7 @@ class AutoCreateSchemaExecutor {
             dataTypesOfMissingMeasurement.add(tsDataType);
             encodingsOfMissingMeasurement.add(getDefaultEncoding(tsDataType));
             compressionTypesOfMissingMeasurement.add(
-                TSFileDescriptor.getInstance().getConfig().getCompressor());
+                TSFileDescriptor.getInstance().getConfig().getCompressor(tsDataType));
           }
         });
 
@@ -181,7 +181,9 @@ class AutoCreateSchemaExecutor {
                   measurements[measurementIndex],
                   tsDataTypes[measurementIndex],
                   getDefaultEncoding(tsDataTypes[measurementIndex]),
-                  TSFileDescriptor.getInstance().getConfig().getCompressor());
+                  TSFileDescriptor.getInstance()
+                      .getConfig()
+                      .getCompressor(tsDataTypes[measurementIndex]));
             }
             return v;
           });
@@ -348,7 +350,9 @@ class AutoCreateSchemaExecutor {
                         ? getDefaultEncoding(tsDataTypes[measurementIndex])
                         : encodings[measurementIndex],
                     compressionTypes == null
-                        ? TSFileDescriptor.getInstance().getConfig().getCompressor()
+                        ? TSFileDescriptor.getInstance()
+                            .getConfig()
+                            .getCompressor(tsDataTypes[measurementIndex])
                         : compressionTypes[measurementIndex]);
               }
               return v;
@@ -392,7 +396,8 @@ class AutoCreateSchemaExecutor {
                       && compressionTypesList.get(finalDeviceIndex1) != null) {
                     compressionType = compressionTypesList.get(finalDeviceIndex1)[index];
                   } else {
-                    compressionType = TSFileDescriptor.getInstance().getConfig().getCompressor();
+                    compressionType =
+                        TSFileDescriptor.getInstance().getConfig().getCompressor(dataType);
                   }
                   templateExtendInfo.addMeasurement(
                       measurement, dataType, encoding, compressionType);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/TemplateSchemaFetcher.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/TemplateSchemaFetcher.java
index 351bb52b67a..5967afceada 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/TemplateSchemaFetcher.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/TemplateSchemaFetcher.java
@@ -155,7 +155,7 @@ class TemplateSchemaFetcher {
                   measurements[j],
                   dataType,
                   getDefaultEncoding(dataType),
-                  TSFileDescriptor.getInstance().getConfig().getCompressor());
+                  TSFileDescriptor.getInstance().getConfig().getCompressor(dataType));
         }
       }
     }
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/ASTVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/ASTVisitor.java
index d33eaa953d3..aa59bc78659 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/ASTVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/parser/ASTVisitor.java
@@ -429,7 +429,9 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
     }
 
     createTimeSeriesStatement.setCompressor(
-        TSFileDescriptor.getInstance().getConfig().getCompressor());
+        TSFileDescriptor.getInstance()
+            .getConfig()
+            .getCompressor(createTimeSeriesStatement.getDataType()));
     if (props != null
         && props.containsKey(IoTDBConstant.COLUMN_TIMESERIES_COMPRESSION.toLowerCase())) {
       String compressionString =
@@ -491,7 +493,7 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
       createAlignedTimeSeriesStatement.addEncoding(encoding);
     }
 
-    CompressionType compressor = TSFileDescriptor.getInstance().getConfig().getCompressor();
+    CompressionType compressor = TSFileDescriptor.getInstance().getConfig().getCompressor(dataType);
     if (props.containsKey(IoTDBConstant.COLUMN_TIMESERIES_COMPRESSOR.toLowerCase())) {
       String compressorString =
           props.get(IoTDBConstant.COLUMN_TIMESERIES_COMPRESSOR.toLowerCase()).toUpperCase();
@@ -3637,7 +3639,7 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
       encodings.add(encoding);
     }
 
-    CompressionType compressor = TSFileDescriptor.getInstance().getConfig().getCompressor();
+    CompressionType compressor = TSFileDescriptor.getInstance().getConfig().getCompressor(dataType);
     if (props.containsKey(IoTDBConstant.COLUMN_TIMESERIES_COMPRESSOR.toLowerCase())) {
       String compressorString =
           props.get(IoTDBConstant.COLUMN_TIMESERIES_COMPRESSOR.toLowerCase()).toUpperCase();
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java
index 2dc54e564f2..d31b7d11244 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java
@@ -223,7 +223,8 @@ public class IoTDBInternalLocalReporter extends IoTDBInternalReporter {
       TSDataType type = inferType(entry.getValue());
       types.add(type.ordinal());
       encodings.add((int) getDefaultEncoding(type).serialize());
-      compressors.add((int) TSFileDescriptor.getInstance().getConfig().getCompressor().serialize());
+      compressors.add(
+          (int) TSFileDescriptor.getInstance().getConfig().getCompressor(type).serialize());
     }
     request.setPaths(paths);
     request.setDataTypes(types);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/batch/utils/FirstBatchCompactionAlignedChunkWriter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/batch/utils/FirstBatchCompactionAlignedChunkWriter.java
index c3b6ae31747..58080a83613 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/batch/utils/FirstBatchCompactionAlignedChunkWriter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/batch/utils/FirstBatchCompactionAlignedChunkWriter.java
@@ -101,7 +101,8 @@ public class FirstBatchCompactionAlignedChunkWriter extends AlignedChunkWriterIm
     TSEncoding timeEncoding =
         TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder());
     TSDataType timeType = TSFileDescriptor.getInstance().getConfig().getTimeSeriesDataType();
-    CompressionType timeCompression = TSFileDescriptor.getInstance().getConfig().getCompressor();
+    CompressionType timeCompression =
+        TSFileDescriptor.getInstance().getConfig().getCompressor(timeType);
     timeChunkWriter =
         new FirstBatchCompactionTimeChunkWriter(
             "",


(iotdb) 03/03: Fix some capitalizations in config template (#16216)

Posted by ji...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jiangtian pushed a commit to branch dev/1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 60d712e8d3edcb4340ef20de31066086178ec102
Author: Jiang Tian <jt...@163.com>
AuthorDate: Wed Aug 20 18:59:41 2025 +0800

    Fix some capitalizations in config template (#16216)
---
 .../assembly/resources/conf/iotdb-system.properties.template | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template b/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
index 417198fce0e..bcfe4756b22 100644
--- a/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
+++ b/iotdb-core/node-commons/src/assembly/resources/conf/iotdb-system.properties.template
@@ -971,32 +971,32 @@ default_text_encoding=PLAIN
 # BOOLEAN compression when creating schema automatically is enabled
 # effectiveMode: hot_reload
 # Datatype: TSEncoding
-boolean_compressor=lz4
+boolean_compressor=LZ4
 
 # INT32/DATE compression when creating schema automatically is enabled
 # effectiveMode: hot_reload
 # Datatype: TSEncoding
-int32_compressor=lz4
+int32_compressor=LZ4
 
 # INT64/TIMESTAMP compression when creating schema automatically is enabled
 # effectiveMode: hot_reload
 # Datatype: TSEncoding
-int64_compressor=lz4
+int64_compressor=LZ4
 
 # FLOAT compression when creating schema automatically is enabled
 # effectiveMode: hot_reload
 # Datatype: TSEncoding
-float_compressor=lz4
+float_compressor=LZ4
 
 # DOUBLE compression when creating schema automatically is enabled
 # effectiveMode: hot_reload
 # Datatype: TSEncoding
-double_compressor=lz4
+double_compressor=LZ4
 
 # TEXT/BINARY/BLOB compression when creating schema automatically is enabled
 # effectiveMode: hot_reload
 # Datatype: TSEncoding
-text_compressor=lz4
+text_compressor=LZ4
 
 ####################
 ### Query Configurations