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());
   }

Reply via email to