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) {