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

jiangtian pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/tsfile.git


The following commit(s) were added to refs/heads/develop by this push:
     new 849f0edb Modify default timestamp encoding (#309)
849f0edb is described below

commit 849f0edba0aa040023cdb5dc2c062b73b813d006
Author: shuwenwei <[email protected]>
AuthorDate: Thu Nov 21 16:36:21 2024 +0800

    Modify default timestamp encoding (#309)
    
    * modify default timestamp encoding
    
    * rename
    
    * modify default encoding
---
 .../apache/tsfile/common/conf/TSFileConfig.java    | 89 ++++++++++++++++++++++
 .../tsfile/write/schema/MeasurementSchema.java     |  2 +-
 .../tsfile/write/schema/TimeseriesSchema.java      |  2 +-
 .../write/schema/VectorMeasurementSchema.java      |  2 +-
 4 files changed, 92 insertions(+), 3 deletions(-)

diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/common/conf/TSFileConfig.java 
b/java/tsfile/src/main/java/org/apache/tsfile/common/conf/TSFileConfig.java
index a368a042..eeef8345 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/common/conf/TSFileConfig.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/common/conf/TSFileConfig.java
@@ -108,6 +108,24 @@ public class TSFileConfig implements Serializable {
    */
   private String timeEncoding = "TS_2DIFF";
 
+  /** Encoder of boolean column. Default value is RLE. */
+  private String booleanEncoding = "RLE";
+
+  /** Encoder of int32 and date column. Default value is TS_2DIFF. */
+  private String int32Encoding = "TS_2DIFF";
+
+  /** Encoder of int64 and timestamp column. Default value is TS_2DIFF. */
+  private String int64Encoding = "TS_2DIFF";
+
+  /** Encoder of float column. Default value is GORILLA. */
+  private String floatEncoding = "GORILLA";
+
+  /** Encoder of double column. Default value is GORILLA. */
+  private String doubleEncoding = "GORILLA";
+
+  /** Encoder of string, blob and text column. Default value is PLAIN. */
+  private String textEncoding = "PLAIN";
+
   /**
    * Encoder of value series. default value is PLAIN. For int, long data type, 
TsFile also supports
    * TS_2DIFF, REGULAR, GORILLA and RLE(run-length encoding). For float, 
double data type, TsFile
@@ -331,14 +349,85 @@ public class TSFileConfig implements Serializable {
 
   // Don't change the following configuration
 
+  @Deprecated
   public String getValueEncoder() {
     return valueEncoder;
   }
 
+  public String getValueEncoder(TSDataType dataType) {
+    switch (dataType) {
+      case BOOLEAN:
+        return booleanEncoding;
+      case INT32:
+      case DATE:
+        return int32Encoding;
+      case INT64:
+      case TIMESTAMP:
+        return int64Encoding;
+      case FLOAT:
+        return floatEncoding;
+      case DOUBLE:
+        return doubleEncoding;
+      case STRING:
+      case BLOB:
+      case TEXT:
+      default:
+        return textEncoding;
+    }
+  }
+
   public void setValueEncoder(String valueEncoder) {
     this.valueEncoder = valueEncoder;
   }
 
+  public String getBooleanEncoding() {
+    return booleanEncoding;
+  }
+
+  public void setBooleanEncoding(String booleanEncoding) {
+    this.booleanEncoding = booleanEncoding;
+  }
+
+  public String getInt32Encoding() {
+    return int32Encoding;
+  }
+
+  public void setInt32Encoding(String int32Encoding) {
+    this.int32Encoding = int32Encoding;
+  }
+
+  public String getInt64Encoding() {
+    return int64Encoding;
+  }
+
+  public void setInt64Encoding(String int64Encoding) {
+    this.int64Encoding = int64Encoding;
+  }
+
+  public String getFloatEncoding() {
+    return floatEncoding;
+  }
+
+  public void setFloatEncoding(String floatEncoding) {
+    this.floatEncoding = floatEncoding;
+  }
+
+  public String getDoubleEncoding() {
+    return doubleEncoding;
+  }
+
+  public void setDoubleEncoding(String doubleEncoding) {
+    this.doubleEncoding = doubleEncoding;
+  }
+
+  public String getTextEncoding() {
+    return textEncoding;
+  }
+
+  public void setTextEncoding(String textEncoding) {
+    this.textEncoding = textEncoding;
+  }
+
   public int getRleBitWidth() {
     return rleBitWidth;
   }
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/schema/MeasurementSchema.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/write/schema/MeasurementSchema.java
index 33b76d98..7d078477 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/write/schema/MeasurementSchema.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/write/schema/MeasurementSchema.java
@@ -61,7 +61,7 @@ public class MeasurementSchema
     this(
         measurementName,
         dataType,
-        
TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
+        
TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder(dataType)),
         TSFileDescriptor.getInstance().getConfig().getCompressor(),
         null);
   }
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/schema/TimeseriesSchema.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/write/schema/TimeseriesSchema.java
index 0c287e85..e05912d0 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/write/schema/TimeseriesSchema.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/write/schema/TimeseriesSchema.java
@@ -55,7 +55,7 @@ public class TimeseriesSchema implements 
Comparable<TimeseriesSchema>, Serializa
     this(
         fullPath,
         tsDataType,
-        
TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
+        
TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder(tsDataType)),
         TSFileDescriptor.getInstance().getConfig().getCompressor(),
         Collections.emptyMap());
   }
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/schema/VectorMeasurementSchema.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/write/schema/VectorMeasurementSchema.java
index 36ccf03c..ab63a752 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/write/schema/VectorMeasurementSchema.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/write/schema/VectorMeasurementSchema.java
@@ -92,7 +92,7 @@ public class VectorMeasurementSchema
     this.encodings = new byte[types.length];
     for (int i = 0; i < types.length; i++) {
       this.encodings[i] =
-          
TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder())
+          
TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder(types[i]))
               .serialize();
     }
     this.encodingConverters = new TSEncodingBuilder[subMeasurements.length];

Reply via email to