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

jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new f9195c1e06e Add getBlob and getDate for SessionDataSet.DataIterator
f9195c1e06e is described below

commit f9195c1e06e856a021da3706d80da1a0a92d26f5
Author: shuwenwei <[email protected]>
AuthorDate: Fri Apr 18 17:26:48 2025 +0800

    Add getBlob and getDate for SessionDataSet.DataIterator
---
 .../iotdb/session/it/IoTDBSessionSimpleIT.java     | 73 ++++++++++++++++++++++
 .../org/apache/iotdb/isession/SessionDataSet.java  | 18 ++++++
 .../java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java | 17 ++++-
 3 files changed, 107 insertions(+), 1 deletion(-)

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 4b7e5d8d9f6..543a3707c02 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
@@ -45,6 +45,7 @@ import org.apache.tsfile.file.metadata.enums.TSEncoding;
 import org.apache.tsfile.read.common.Field;
 import org.apache.tsfile.read.common.RowRecord;
 import org.apache.tsfile.utils.Binary;
+import org.apache.tsfile.utils.DateUtils;
 import org.apache.tsfile.write.TsFileWriter;
 import org.apache.tsfile.write.record.TSRecord;
 import org.apache.tsfile.write.record.Tablet;
@@ -63,6 +64,7 @@ import org.slf4j.LoggerFactory;
 import java.io.File;
 import java.io.IOException;
 import java.security.SecureRandom;
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -2127,4 +2129,75 @@ public class IoTDBSessionSimpleIT {
       assertEquals(3, record.getFields().size());
     }
   }
+
+  @Test
+  @Category({LocalStandaloneIT.class, ClusterIT.class})
+  public void testQueryAllDataType() throws IoTDBConnectionException, 
StatementExecutionException {
+    Tablet tablet =
+        new Tablet(
+            "root.sg.d1",
+            Arrays.asList(
+                new MeasurementSchema("s1", TSDataType.INT32),
+                new MeasurementSchema("s2", TSDataType.INT64),
+                new MeasurementSchema("s3", TSDataType.FLOAT),
+                new MeasurementSchema("s4", TSDataType.DOUBLE),
+                new MeasurementSchema("s5", TSDataType.TEXT),
+                new MeasurementSchema("s6", TSDataType.BOOLEAN),
+                new MeasurementSchema("s7", TSDataType.TIMESTAMP),
+                new MeasurementSchema("s8", TSDataType.BLOB),
+                new MeasurementSchema("s9", TSDataType.STRING),
+                new MeasurementSchema("s10", TSDataType.DATE),
+                new MeasurementSchema("s11", TSDataType.TIMESTAMP)),
+            10);
+    tablet.addTimestamp(0, 0L);
+    tablet.addValue("s1", 0, 1);
+    tablet.addValue("s2", 0, 1L);
+    tablet.addValue("s3", 0, 0f);
+    tablet.addValue("s4", 0, 0d);
+    tablet.addValue("s5", 0, "text_value");
+    tablet.addValue("s6", 0, true);
+    tablet.addValue("s7", 0, 1L);
+    tablet.addValue("s8", 0, new Binary(new byte[] {1}));
+    tablet.addValue("s9", 0, "string_value");
+    tablet.addValue("s10", 0, DateUtils.parseIntToLocalDate(20250403));
+
+    try (ISession session = EnvFactory.getEnv().getSessionConnection()) {
+      session.insertTablet(tablet);
+
+      try (SessionDataSet dataSet = session.executeQueryStatement("select * 
from root.sg.d1")) {
+        SessionDataSet.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"));
+          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"));
+        }
+        Assert.assertEquals(tablet.getRowSize(), count);
+      }
+    }
+  }
 }
diff --git 
a/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/SessionDataSet.java
 
b/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/SessionDataSet.java
index 81e04d4c53b..fa67708fed0 100644
--- 
a/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/SessionDataSet.java
+++ 
b/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/SessionDataSet.java
@@ -29,10 +29,12 @@ import org.apache.thrift.TException;
 import org.apache.tsfile.enums.TSDataType;
 import org.apache.tsfile.read.common.Field;
 import org.apache.tsfile.read.common.RowRecord;
+import org.apache.tsfile.utils.Binary;
 import org.apache.tsfile.write.UnSupportedDataTypeException;
 
 import java.nio.ByteBuffer;
 import java.sql.Timestamp;
+import java.time.LocalDate;
 import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.List;
@@ -315,6 +317,22 @@ public class SessionDataSet implements ISessionDataSet {
       return ioTDBRpcDataSet.getTimestamp(columnName);
     }
 
+    public LocalDate getDate(int columnIndex) throws 
StatementExecutionException {
+      return ioTDBRpcDataSet.getDate(columnIndex);
+    }
+
+    public LocalDate getDate(String columnName) throws 
StatementExecutionException {
+      return ioTDBRpcDataSet.getDate(columnName);
+    }
+
+    public Binary getBlob(int columnIndex) throws StatementExecutionException {
+      return ioTDBRpcDataSet.getBinary(columnIndex);
+    }
+
+    public Binary getBlob(String columnName) throws 
StatementExecutionException {
+      return ioTDBRpcDataSet.getBinary(columnName);
+    }
+
     public int findColumn(String columnName) {
       return ioTDBRpcDataSet.findColumn(columnName);
     }
diff --git 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java
 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java
index a889a7ffa93..a40197fac79 100644
--- 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java
+++ 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java
@@ -36,6 +36,7 @@ import org.apache.tsfile.utils.DateUtils;
 
 import java.nio.ByteBuffer;
 import java.sql.Timestamp;
+import java.time.LocalDate;
 import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -574,7 +575,21 @@ public class IoTDBRpcDataSet {
   private Timestamp getTimestampByTsBlockColumnIndex(int tsBlockColumnIndex)
       throws StatementExecutionException {
     long timestamp = getLongByTsBlockColumnIndex(tsBlockColumnIndex);
-    return convertToTimestamp(timestamp, timeFactor);
+    return lastReadWasNull ? null : convertToTimestamp(timestamp, timeFactor);
+  }
+
+  public LocalDate getDate(int columnIndex) throws StatementExecutionException 
{
+    return 
getDateByTsBlockColumnIndex(getTsBlockColumnIndexForColumnIndex(columnIndex));
+  }
+
+  public LocalDate getDate(String columnName) throws 
StatementExecutionException {
+    return 
getDateByTsBlockColumnIndex(getTsBlockColumnIndexForColumnName(columnName));
+  }
+
+  public LocalDate getDateByTsBlockColumnIndex(int tsBlockColumnIndex)
+      throws StatementExecutionException {
+    int intValue = getIntByTsBlockColumnIndex(tsBlockColumnIndex);
+    return lastReadWasNull ? null : DateUtils.parseIntToLocalDate(intValue);
   }
 
   public TSDataType getDataType(int columnIndex) {

Reply via email to