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 880ec37a Allow other value of data type can be converted to value of
Binary data type when find type is not consistence in the column of tsblock.
(#676)
880ec37a is described below
commit 880ec37a903dc458eb4f35af88437a80b99ca6d5
Author: libo <[email protected]>
AuthorDate: Thu Dec 25 19:00:17 2025 +0800
Allow other value of data type can be converted to value of Binary data
type when find type is not consistence in the column of tsblock. (#676)
---
.../org/apache/tsfile/utils/TsPrimitiveType.java | 26 ++++++++++++++++++++++
.../read/common/block/column/BooleanColumn.java | 16 +++++++++++++
.../read/common/block/column/DoubleColumn.java | 16 +++++++++++++
.../read/common/block/column/FloatColumn.java | 16 +++++++++++++
.../tsfile/read/common/block/column/IntColumn.java | 16 +++++++++++++
.../read/common/block/column/LongColumn.java | 16 +++++++++++++
.../org/apache/tsfile/read/common/ColumnTest.java | 18 +++++++++++++++
7 files changed, 124 insertions(+)
diff --git
a/java/common/src/main/java/org/apache/tsfile/utils/TsPrimitiveType.java
b/java/common/src/main/java/org/apache/tsfile/utils/TsPrimitiveType.java
index 4850d1ad..0538f1b3 100644
--- a/java/common/src/main/java/org/apache/tsfile/utils/TsPrimitiveType.java
+++ b/java/common/src/main/java/org/apache/tsfile/utils/TsPrimitiveType.java
@@ -22,6 +22,7 @@ import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.write.UnSupportedDataTypeException;
import java.io.Serializable;
+import java.nio.charset.StandardCharsets;
import java.util.Arrays;
public abstract class TsPrimitiveType implements Serializable {
@@ -198,6 +199,11 @@ public abstract class TsPrimitiveType implements
Serializable {
this.value = val;
}
+ @Override
+ public Binary getBinary() {
+ return new Binary(String.valueOf(this.value), StandardCharsets.UTF_8);
+ }
+
@Override
public void setObject(Object val) {
if (val instanceof Boolean) {
@@ -280,6 +286,11 @@ public abstract class TsPrimitiveType implements
Serializable {
return (float) value;
}
+ @Override
+ public Binary getBinary() {
+ return new Binary(String.valueOf(this.value), StandardCharsets.UTF_8);
+ }
+
@Override
public void setInt(int val) {
this.value = val;
@@ -357,6 +368,11 @@ public abstract class TsPrimitiveType implements
Serializable {
return (double) value;
}
+ @Override
+ public Binary getBinary() {
+ return new Binary(String.valueOf(this.value), StandardCharsets.UTF_8);
+ }
+
@Override
public void setLong(long val) {
this.value = val;
@@ -434,6 +450,11 @@ public abstract class TsPrimitiveType implements
Serializable {
return (double) value;
}
+ @Override
+ public Binary getBinary() {
+ return new Binary(String.valueOf(this.value), StandardCharsets.UTF_8);
+ }
+
@Override
public void setFloat(float val) {
this.value = val;
@@ -506,6 +527,11 @@ public abstract class TsPrimitiveType implements
Serializable {
return value;
}
+ @Override
+ public Binary getBinary() {
+ return new Binary(String.valueOf(this.value), StandardCharsets.UTF_8);
+ }
+
@Override
public void setDouble(double val) {
this.value = val;
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BooleanColumn.java
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BooleanColumn.java
index 7b9aca74..b00a5a66 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BooleanColumn.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BooleanColumn.java
@@ -22,9 +22,11 @@ package org.apache.tsfile.read.common.block.column;
import org.apache.tsfile.block.column.Column;
import org.apache.tsfile.block.column.ColumnEncoding;
import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
import org.apache.tsfile.utils.RamUsageEstimator;
import org.apache.tsfile.utils.TsPrimitiveType;
+import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Optional;
@@ -93,11 +95,25 @@ public class BooleanColumn implements Column {
return values[position + arrayOffset];
}
+ @Override
+ public Binary getBinary(int position) {
+ return new Binary(String.valueOf(values[position + arrayOffset]),
StandardCharsets.UTF_8);
+ }
+
@Override
public boolean[] getBooleans() {
return values;
}
+ @Override
+ public Binary[] getBinaries() {
+ Binary[] binaries = new Binary[values.length];
+ for (int i = 0; i < values.length; i++) {
+ binaries[i] = new Binary(String.valueOf(values[i]),
StandardCharsets.UTF_8);
+ }
+ return binaries;
+ }
+
@Override
public Object getObject(int position) {
return getBoolean(position);
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/DoubleColumn.java
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/DoubleColumn.java
index e0aff8f7..7c99610c 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/DoubleColumn.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/DoubleColumn.java
@@ -22,9 +22,11 @@ package org.apache.tsfile.read.common.block.column;
import org.apache.tsfile.block.column.Column;
import org.apache.tsfile.block.column.ColumnEncoding;
import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
import org.apache.tsfile.utils.RamUsageEstimator;
import org.apache.tsfile.utils.TsPrimitiveType;
+import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Optional;
@@ -94,11 +96,25 @@ public class DoubleColumn implements Column {
return values[position + arrayOffset];
}
+ @Override
+ public Binary getBinary(int position) {
+ return new Binary(String.valueOf(values[position + arrayOffset]),
StandardCharsets.UTF_8);
+ }
+
@Override
public double[] getDoubles() {
return values;
}
+ @Override
+ public Binary[] getBinaries() {
+ Binary[] binaries = new Binary[values.length];
+ for (int i = 0; i < values.length; i++) {
+ binaries[i] = new Binary(String.valueOf(values[i]),
StandardCharsets.UTF_8);
+ }
+ return binaries;
+ }
+
@Override
public Object getObject(int position) {
return getDouble(position);
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/FloatColumn.java
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/FloatColumn.java
index 8a576c0c..85cd7916 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/FloatColumn.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/FloatColumn.java
@@ -22,9 +22,11 @@ package org.apache.tsfile.read.common.block.column;
import org.apache.tsfile.block.column.Column;
import org.apache.tsfile.block.column.ColumnEncoding;
import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
import org.apache.tsfile.utils.RamUsageEstimator;
import org.apache.tsfile.utils.TsPrimitiveType;
+import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Optional;
@@ -100,6 +102,11 @@ public class FloatColumn implements Column {
return values[position + arrayOffset];
}
+ @Override
+ public Binary getBinary(int position) {
+ return new Binary(String.valueOf(values[position + arrayOffset]),
StandardCharsets.UTF_8);
+ }
+
@Override
public float[] getFloats() {
return values;
@@ -114,6 +121,15 @@ public class FloatColumn implements Column {
return doubles;
}
+ @Override
+ public Binary[] getBinaries() {
+ Binary[] binaries = new Binary[values.length];
+ for (int i = 0; i < values.length; i++) {
+ binaries[i] = new Binary(String.valueOf(values[i]),
StandardCharsets.UTF_8);
+ }
+ return binaries;
+ }
+
@Override
public Object getObject(int position) {
return getFloat(position);
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/IntColumn.java
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/IntColumn.java
index 6820a83e..a5ea6851 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/IntColumn.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/IntColumn.java
@@ -22,9 +22,11 @@ package org.apache.tsfile.read.common.block.column;
import org.apache.tsfile.block.column.Column;
import org.apache.tsfile.block.column.ColumnEncoding;
import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
import org.apache.tsfile.utils.RamUsageEstimator;
import org.apache.tsfile.utils.TsPrimitiveType;
+import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Optional;
@@ -110,6 +112,11 @@ public class IntColumn implements Column {
return values[position + arrayOffset];
}
+ @Override
+ public Binary getBinary(int position) {
+ return new Binary(String.valueOf(values[position + arrayOffset]),
StandardCharsets.UTF_8);
+ }
+
@Override
public int[] getInts() {
return values;
@@ -142,6 +149,15 @@ public class IntColumn implements Column {
return result;
}
+ @Override
+ public Binary[] getBinaries() {
+ Binary[] binaries = new Binary[values.length];
+ for (int i = 0; i < values.length; i++) {
+ binaries[i] = new Binary(String.valueOf(values[i]),
StandardCharsets.UTF_8);
+ }
+ return binaries;
+ }
+
@Override
public Object getObject(int position) {
return getInt(position);
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/LongColumn.java
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/LongColumn.java
index 03d8af0e..b2dd5d1a 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/LongColumn.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/LongColumn.java
@@ -22,9 +22,11 @@ package org.apache.tsfile.read.common.block.column;
import org.apache.tsfile.block.column.Column;
import org.apache.tsfile.block.column.ColumnEncoding;
import org.apache.tsfile.enums.TSDataType;
+import org.apache.tsfile.utils.Binary;
import org.apache.tsfile.utils.RamUsageEstimator;
import org.apache.tsfile.utils.TsPrimitiveType;
+import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Optional;
@@ -100,6 +102,11 @@ public class LongColumn implements Column {
return values[position + arrayOffset];
}
+ @Override
+ public Binary getBinary(int position) {
+ return new Binary(String.valueOf(values[position + arrayOffset]),
StandardCharsets.UTF_8);
+ }
+
@Override
public long[] getLongs() {
return values;
@@ -114,6 +121,15 @@ public class LongColumn implements Column {
return doubles;
}
+ @Override
+ public Binary[] getBinaries() {
+ Binary[] binaries = new Binary[values.length];
+ for (int i = 0; i < values.length; i++) {
+ binaries[i] = new Binary(String.valueOf(values[i]),
StandardCharsets.UTF_8);
+ }
+ return binaries;
+ }
+
@Override
public Object getObject(int position) {
return getLong(position);
diff --git
a/java/tsfile/src/test/java/org/apache/tsfile/read/common/ColumnTest.java
b/java/tsfile/src/test/java/org/apache/tsfile/read/common/ColumnTest.java
index 0cb3f2e7..f3a78432 100644
--- a/java/tsfile/src/test/java/org/apache/tsfile/read/common/ColumnTest.java
+++ b/java/tsfile/src/test/java/org/apache/tsfile/read/common/ColumnTest.java
@@ -38,11 +38,13 @@ import
org.apache.tsfile.read.common.block.column.NullColumn;
import org.apache.tsfile.read.common.block.column.RunLengthEncodedColumn;
import org.apache.tsfile.read.common.block.column.TimeColumn;
import org.apache.tsfile.read.common.block.column.TimeColumnBuilder;
+import org.apache.tsfile.utils.Binary;
import org.apache.tsfile.utils.BytesUtils;
import org.junit.Assert;
import org.junit.Test;
+import java.nio.charset.StandardCharsets;
import java.util.Optional;
public class ColumnTest {
@@ -224,7 +226,11 @@ public class ColumnTest {
Assert.assertTrue(columnByGetPositions instanceof DictionaryColumn);
Assert.assertEquals(2, columnByGetPositions.getPositionCount());
Assert.assertFalse(columnByGetPositions.getBoolean(0));
+ Assert.assertEquals(
+ new Binary("false", StandardCharsets.UTF_8),
columnByGetPositions.getBinary(0));
Assert.assertTrue(columnByGetPositions.getBoolean(1));
+ Assert.assertEquals(
+ new Binary("true", StandardCharsets.UTF_8),
columnByGetPositions.getBinary(1));
Column columnByCopyPositions =
originalColumn.copyPositions(selectedPositions, 1, 2);
Assert.assertEquals(2, columnByCopyPositions.getPositionCount());
@@ -242,7 +248,9 @@ public class ColumnTest {
doubleColumn1 = (DoubleColumn) doubleColumn1.subColumn(5);
Assert.assertEquals(5, doubleColumn1.getPositionCount());
Assert.assertEquals(5.0, doubleColumn1.getDouble(0), 0.001);
+ Assert.assertEquals(new Binary("5.0", StandardCharsets.UTF_8),
doubleColumn1.getBinary(0));
Assert.assertEquals(9.0, doubleColumn1.getDouble(4), 0.001);
+ Assert.assertEquals(new Binary("9.0", StandardCharsets.UTF_8),
doubleColumn1.getBinary(4));
DoubleColumn doubleColumn2 = (DoubleColumn) doubleColumn1.subColumn(3);
Assert.assertEquals(2, doubleColumn2.getPositionCount());
@@ -303,7 +311,9 @@ public class ColumnTest {
floatColumn1 = (FloatColumn) floatColumn1.subColumn(5);
Assert.assertEquals(5, floatColumn1.getPositionCount());
Assert.assertEquals(5.0, floatColumn1.getFloat(0), 0.001);
+ Assert.assertEquals(new Binary("5.0", StandardCharsets.UTF_8),
floatColumn1.getBinary(0));
Assert.assertEquals(9.0, floatColumn1.getFloat(4), 0.001);
+ Assert.assertEquals(new Binary("9.0", StandardCharsets.UTF_8),
floatColumn1.getBinary(4));
FloatColumn floatColumn2 = (FloatColumn) floatColumn1.subColumn(3);
Assert.assertEquals(2, floatColumn2.getPositionCount());
@@ -414,6 +424,10 @@ public class ColumnTest {
Assert.assertEquals(2, columnByCopyPositions.getPositionCount());
Assert.assertEquals(3, columnByCopyPositions.getInt(0));
Assert.assertEquals(5, columnByCopyPositions.getInt(1));
+ Assert.assertEquals(
+ new Binary("3", StandardCharsets.UTF_8),
columnByCopyPositions.getBinary(0));
+ Assert.assertEquals(
+ new Binary("5", StandardCharsets.UTF_8),
columnByCopyPositions.getBinary(1));
}
@Test
@@ -427,11 +441,15 @@ public class ColumnTest {
Assert.assertEquals(5, longColumn1.getPositionCount());
Assert.assertEquals(5, longColumn1.getLong(0));
Assert.assertEquals(9, longColumn1.getLong(4));
+ Assert.assertEquals(new Binary("5", StandardCharsets.UTF_8),
longColumn1.getBinary(0));
+ Assert.assertEquals(new Binary("9", StandardCharsets.UTF_8),
longColumn1.getBinary(4));
LongColumn longColumn2 = (LongColumn) longColumn1.subColumn(3);
Assert.assertEquals(2, longColumn2.getPositionCount());
Assert.assertEquals(8, longColumn2.getLong(0));
Assert.assertEquals(9, longColumn2.getLong(1));
+ Assert.assertEquals(new Binary("8", StandardCharsets.UTF_8),
longColumn2.getBinary(0));
+ Assert.assertEquals(new Binary("9", StandardCharsets.UTF_8),
longColumn2.getBinary(1));
Assert.assertSame(longColumn1.getLongs(), longColumn2.getLongs());
}