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];