Skip to content

Commit c5bca66

Browse files
authored
add example of SessionDataSet.DataIterator to tree (#931)
1 parent 6059cf9 commit c5bca66

12 files changed

+1495
-0
lines changed

src/UserGuide/Master/Tree/API/Programming-Java-Native-API_apache.md

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,130 @@ public class SessionPoolExample {
362362
}
363363
```
364364

365+
For more information on the use of result sets and their method `SessionDataSet.DataIterator`, please refer to the following example (note: the `getBlob` and `getDate` interfaces have been supported since version V2.0.4):
366+
367+
```java
368+
import org.apache.iotdb.isession.SessionDataSet;
369+
import org.apache.iotdb.isession.pool.SessionDataSetWrapper;
370+
import org.apache.iotdb.rpc.IoTDBConnectionException;
371+
import org.apache.iotdb.rpc.StatementExecutionException;
372+
import org.apache.iotdb.session.pool.SessionPool;
373+
374+
import org.apache.tsfile.enums.TSDataType;
375+
import org.apache.tsfile.utils.Binary;
376+
import org.apache.tsfile.utils.DateUtils;
377+
import org.apache.tsfile.write.record.Tablet;
378+
import org.apache.tsfile.write.schema.MeasurementSchema;
379+
import org.junit.Assert;
380+
381+
import java.sql.Timestamp;
382+
import java.util.ArrayList;
383+
import java.util.Arrays;
384+
import java.util.List;
385+
386+
public class SessionExample {
387+
private static SessionPool sessionPool;
388+
389+
public static void main(String[] args)
390+
throws IoTDBConnectionException, StatementExecutionException {
391+
// 1. init SessionPool
392+
constructSessionPool();
393+
// 2. executes a query SQL statement, such as a DDL or DML command.
394+
executeQueryExample();
395+
// 3. close SessionPool
396+
closeSessionPool();
397+
}
398+
399+
private static void executeQueryExample()
400+
throws IoTDBConnectionException, StatementExecutionException {
401+
Tablet tablet =
402+
new Tablet(
403+
"root.sg.d1",
404+
Arrays.asList(
405+
new MeasurementSchema("s1", TSDataType.INT32),
406+
new MeasurementSchema("s2", TSDataType.INT64),
407+
new MeasurementSchema("s3", TSDataType.FLOAT),
408+
new MeasurementSchema("s4", TSDataType.DOUBLE),
409+
new MeasurementSchema("s5", TSDataType.TEXT),
410+
new MeasurementSchema("s6", TSDataType.BOOLEAN),
411+
new MeasurementSchema("s7", TSDataType.TIMESTAMP),
412+
new MeasurementSchema("s8", TSDataType.BLOB),
413+
new MeasurementSchema("s9", TSDataType.STRING),
414+
new MeasurementSchema("s10", TSDataType.DATE),
415+
new MeasurementSchema("s11", TSDataType.TIMESTAMP)),
416+
10);
417+
tablet.addTimestamp(0, 0L);
418+
tablet.addValue("s1", 0, 1);
419+
tablet.addValue("s2", 0, 1L);
420+
tablet.addValue("s3", 0, 0f);
421+
tablet.addValue("s4", 0, 0d);
422+
tablet.addValue("s5", 0, "text_value");
423+
tablet.addValue("s6", 0, true);
424+
tablet.addValue("s7", 0, 1L);
425+
tablet.addValue("s8", 0, new Binary(new byte[] {1}));
426+
tablet.addValue("s9", 0, "string_value");
427+
tablet.addValue("s10", 0, DateUtils.parseIntToLocalDate(20250403));
428+
tablet.initBitMaps();
429+
tablet.bitMaps[10].mark(0);
430+
tablet.rowSize = 1;
431+
sessionPool.insertAlignedTablet(tablet);
432+
433+
try (SessionDataSetWrapper dataSet =
434+
sessionPool.executeQueryStatement("select * from root.sg.d1")) {
435+
SessionDataSet.DataIterator iterator = dataSet.iterator();
436+
int count = 0;
437+
while (iterator.next()) {
438+
count++;
439+
Assert.assertFalse(iterator.isNull("root.sg.d1.s1"));
440+
Assert.assertEquals(1, iterator.getInt("root.sg.d1.s1"));
441+
Assert.assertFalse(iterator.isNull("root.sg.d1.s2"));
442+
Assert.assertEquals(1L, iterator.getLong("root.sg.d1.s2"));
443+
Assert.assertFalse(iterator.isNull("root.sg.d1.s3"));
444+
Assert.assertEquals(0, iterator.getFloat("root.sg.d1.s3"), 0.01);
445+
Assert.assertFalse(iterator.isNull("root.sg.d1.s4"));
446+
Assert.assertEquals(0, iterator.getDouble("root.sg.d1.s4"), 0.01);
447+
Assert.assertFalse(iterator.isNull("root.sg.d1.s5"));
448+
Assert.assertEquals("text_value", iterator.getString("root.sg.d1.s5"));
449+
Assert.assertFalse(iterator.isNull("root.sg.d1.s6"));
450+
Assert.assertTrue(iterator.getBoolean("root.sg.d1.s6"));
451+
Assert.assertFalse(iterator.isNull("root.sg.d1.s7"));
452+
Assert.assertEquals(new Timestamp(1), iterator.getTimestamp("root.sg.d1.s7"));
453+
Assert.assertFalse(iterator.isNull("root.sg.d1.s8"));
454+
Assert.assertEquals(new Binary(new byte[] {1}), iterator.getBlob("root.sg.d1.s8"));
455+
Assert.assertFalse(iterator.isNull("root.sg.d1.s9"));
456+
Assert.assertEquals("string_value", iterator.getString("root.sg.d1.s9"));
457+
Assert.assertFalse(iterator.isNull("root.sg.d1.s10"));
458+
Assert.assertEquals(
459+
DateUtils.parseIntToLocalDate(20250403), iterator.getDate("root.sg.d1.s10"));
460+
Assert.assertTrue(iterator.isNull("root.sg.d1.s11"));
461+
Assert.assertNull(iterator.getTimestamp("root.sg.d1.s11"));
462+
463+
Assert.assertEquals(new Timestamp(0), iterator.getTimestamp("Time"));
464+
Assert.assertFalse(iterator.isNull("Time"));
465+
}
466+
Assert.assertEquals(tablet.rowSize, count);
467+
}
468+
}
469+
470+
private static void constructSessionPool() {
471+
List<String> nodeUrls = new ArrayList<>();
472+
nodeUrls.add("127.0.0.1:6667");
473+
sessionPool =
474+
new SessionPool.Builder()
475+
.nodeUrls(nodeUrls)
476+
.user("root")
477+
.password("root")
478+
.maxSize(3)
479+
.build();
480+
}
481+
482+
public static void closeSessionPool() {
483+
sessionPool.close();
484+
}
485+
}
486+
```
487+
488+
365489
### 3. Native Interface Description
366490

367491
#### 3.1 Parameter List

src/UserGuide/Master/Tree/API/Programming-Java-Native-API_timecho.md

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,132 @@ public class SessionPoolExample {
362362
}
363363
```
364364

365+
366+
For more information on the use of result sets and their method `SessionDataSet.DataIterator`, please refer to the following example (note: the `getBlob` and `getDate` interfaces have been supported since version V2.0.4):
367+
368+
```java
369+
import org.apache.iotdb.isession.SessionDataSet;
370+
import org.apache.iotdb.isession.pool.SessionDataSetWrapper;
371+
import org.apache.iotdb.rpc.IoTDBConnectionException;
372+
import org.apache.iotdb.rpc.StatementExecutionException;
373+
import org.apache.iotdb.session.pool.SessionPool;
374+
375+
import org.apache.tsfile.enums.TSDataType;
376+
import org.apache.tsfile.utils.Binary;
377+
import org.apache.tsfile.utils.DateUtils;
378+
import org.apache.tsfile.write.record.Tablet;
379+
import org.apache.tsfile.write.schema.MeasurementSchema;
380+
import org.junit.Assert;
381+
382+
import java.sql.Timestamp;
383+
import java.util.ArrayList;
384+
import java.util.Arrays;
385+
import java.util.List;
386+
387+
public class SessionExample {
388+
private static SessionPool sessionPool;
389+
390+
public static void main(String[] args)
391+
throws IoTDBConnectionException, StatementExecutionException {
392+
// 1. init SessionPool
393+
constructSessionPool();
394+
// 2. executes a query SQL statement, such as a DDL or DML command.
395+
executeQueryExample();
396+
// 3. close SessionPool
397+
closeSessionPool();
398+
}
399+
400+
private static void executeQueryExample()
401+
throws IoTDBConnectionException, StatementExecutionException {
402+
Tablet tablet =
403+
new Tablet(
404+
"root.sg.d1",
405+
Arrays.asList(
406+
new MeasurementSchema("s1", TSDataType.INT32),
407+
new MeasurementSchema("s2", TSDataType.INT64),
408+
new MeasurementSchema("s3", TSDataType.FLOAT),
409+
new MeasurementSchema("s4", TSDataType.DOUBLE),
410+
new MeasurementSchema("s5", TSDataType.TEXT),
411+
new MeasurementSchema("s6", TSDataType.BOOLEAN),
412+
new MeasurementSchema("s7", TSDataType.TIMESTAMP),
413+
new MeasurementSchema("s8", TSDataType.BLOB),
414+
new MeasurementSchema("s9", TSDataType.STRING),
415+
new MeasurementSchema("s10", TSDataType.DATE),
416+
new MeasurementSchema("s11", TSDataType.TIMESTAMP)),
417+
10);
418+
tablet.addTimestamp(0, 0L);
419+
tablet.addValue("s1", 0, 1);
420+
tablet.addValue("s2", 0, 1L);
421+
tablet.addValue("s3", 0, 0f);
422+
tablet.addValue("s4", 0, 0d);
423+
tablet.addValue("s5", 0, "text_value");
424+
tablet.addValue("s6", 0, true);
425+
tablet.addValue("s7", 0, 1L);
426+
tablet.addValue("s8", 0, new Binary(new byte[] {1}));
427+
tablet.addValue("s9", 0, "string_value");
428+
tablet.addValue("s10", 0, DateUtils.parseIntToLocalDate(20250403));
429+
tablet.initBitMaps();
430+
tablet.bitMaps[10].mark(0);
431+
tablet.rowSize = 1;
432+
sessionPool.insertAlignedTablet(tablet);
433+
434+
try (SessionDataSetWrapper dataSet =
435+
sessionPool.executeQueryStatement("select * from root.sg.d1")) {
436+
SessionDataSet.DataIterator iterator = dataSet.iterator();
437+
int count = 0;
438+
while (iterator.next()) {
439+
count++;
440+
Assert.assertFalse(iterator.isNull("root.sg.d1.s1"));
441+
Assert.assertEquals(1, iterator.getInt("root.sg.d1.s1"));
442+
Assert.assertFalse(iterator.isNull("root.sg.d1.s2"));
443+
Assert.assertEquals(1L, iterator.getLong("root.sg.d1.s2"));
444+
Assert.assertFalse(iterator.isNull("root.sg.d1.s3"));
445+
Assert.assertEquals(0, iterator.getFloat("root.sg.d1.s3"), 0.01);
446+
Assert.assertFalse(iterator.isNull("root.sg.d1.s4"));
447+
Assert.assertEquals(0, iterator.getDouble("root.sg.d1.s4"), 0.01);
448+
Assert.assertFalse(iterator.isNull("root.sg.d1.s5"));
449+
Assert.assertEquals("text_value", iterator.getString("root.sg.d1.s5"));
450+
Assert.assertFalse(iterator.isNull("root.sg.d1.s6"));
451+
Assert.assertTrue(iterator.getBoolean("root.sg.d1.s6"));
452+
Assert.assertFalse(iterator.isNull("root.sg.d1.s7"));
453+
Assert.assertEquals(new Timestamp(1), iterator.getTimestamp("root.sg.d1.s7"));
454+
Assert.assertFalse(iterator.isNull("root.sg.d1.s8"));
455+
Assert.assertEquals(new Binary(new byte[] {1}), iterator.getBlob("root.sg.d1.s8"));
456+
Assert.assertFalse(iterator.isNull("root.sg.d1.s9"));
457+
Assert.assertEquals("string_value", iterator.getString("root.sg.d1.s9"));
458+
Assert.assertFalse(iterator.isNull("root.sg.d1.s10"));
459+
Assert.assertEquals(
460+
DateUtils.parseIntToLocalDate(20250403), iterator.getDate("root.sg.d1.s10"));
461+
Assert.assertTrue(iterator.isNull("root.sg.d1.s11"));
462+
Assert.assertNull(iterator.getTimestamp("root.sg.d1.s11"));
463+
464+
Assert.assertEquals(new Timestamp(0), iterator.getTimestamp("Time"));
465+
Assert.assertFalse(iterator.isNull("Time"));
466+
}
467+
Assert.assertEquals(tablet.rowSize, count);
468+
}
469+
}
470+
471+
private static void constructSessionPool() {
472+
List<String> nodeUrls = new ArrayList<>();
473+
nodeUrls.add("127.0.0.1:6667");
474+
sessionPool =
475+
new SessionPool.Builder()
476+
.nodeUrls(nodeUrls)
477+
.user("root")
478+
.password("root")
479+
.maxSize(3)
480+
.build();
481+
}
482+
483+
public static void closeSessionPool() {
484+
sessionPool.close();
485+
}
486+
}
487+
```
488+
489+
490+
365491
### 3. Native Interface Description
366492

367493
#### 3.1 Parameter List

src/UserGuide/V1.3.x/API/Programming-Java-Native-API.md

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,130 @@ public class SessionPoolExample {
361361
}
362362
```
363363

364+
365+
For more information on the use of result sets and their method `SessionDataSet.DataIterator`, please refer to the following example (note: the `getBlob` and `getDate` interfaces have been supported since version V1.3.6):
366+
367+
```java
368+
import org.apache.iotdb.isession.SessionDataSet;
369+
import org.apache.iotdb.isession.pool.SessionDataSetWrapper;
370+
import org.apache.iotdb.rpc.IoTDBConnectionException;
371+
import org.apache.iotdb.rpc.StatementExecutionException;
372+
import org.apache.iotdb.session.pool.SessionPool;
373+
374+
import org.apache.tsfile.enums.TSDataType;
375+
import org.apache.tsfile.utils.Binary;
376+
import org.apache.tsfile.utils.DateUtils;
377+
import org.apache.tsfile.write.record.Tablet;
378+
import org.apache.tsfile.write.schema.MeasurementSchema;
379+
import org.junit.Assert;
380+
381+
import java.sql.Timestamp;
382+
import java.util.ArrayList;
383+
import java.util.Arrays;
384+
import java.util.List;
385+
386+
public class SessionExample {
387+
private static SessionPool sessionPool;
388+
389+
public static void main(String[] args)
390+
throws IoTDBConnectionException, StatementExecutionException {
391+
// 1. init SessionPool
392+
constructSessionPool();
393+
// 2. executes a query SQL statement, such as a DDL or DML command.
394+
executeQueryExample();
395+
// 3. close SessionPool
396+
closeSessionPool();
397+
}
398+
399+
private static void executeQueryExample()
400+
throws IoTDBConnectionException, StatementExecutionException {
401+
Tablet tablet =
402+
new Tablet(
403+
"root.sg.d1",
404+
Arrays.asList(
405+
new MeasurementSchema("s1", TSDataType.INT32),
406+
new MeasurementSchema("s2", TSDataType.INT64),
407+
new MeasurementSchema("s3", TSDataType.FLOAT),
408+
new MeasurementSchema("s4", TSDataType.DOUBLE),
409+
new MeasurementSchema("s5", TSDataType.TEXT),
410+
new MeasurementSchema("s6", TSDataType.BOOLEAN),
411+
new MeasurementSchema("s7", TSDataType.TIMESTAMP),
412+
new MeasurementSchema("s8", TSDataType.BLOB),
413+
new MeasurementSchema("s9", TSDataType.STRING),
414+
new MeasurementSchema("s10", TSDataType.DATE),
415+
new MeasurementSchema("s11", TSDataType.TIMESTAMP)),
416+
10);
417+
tablet.addTimestamp(0, 0L);
418+
tablet.addValue("s1", 0, 1);
419+
tablet.addValue("s2", 0, 1L);
420+
tablet.addValue("s3", 0, 0f);
421+
tablet.addValue("s4", 0, 0d);
422+
tablet.addValue("s5", 0, "text_value");
423+
tablet.addValue("s6", 0, true);
424+
tablet.addValue("s7", 0, 1L);
425+
tablet.addValue("s8", 0, new Binary(new byte[] {1}));
426+
tablet.addValue("s9", 0, "string_value");
427+
tablet.addValue("s10", 0, DateUtils.parseIntToLocalDate(20250403));
428+
tablet.initBitMaps();
429+
tablet.bitMaps[10].mark(0);
430+
tablet.rowSize = 1;
431+
sessionPool.insertAlignedTablet(tablet);
432+
433+
try (SessionDataSetWrapper dataSet =
434+
sessionPool.executeQueryStatement("select * from root.sg.d1")) {
435+
SessionDataSet.DataIterator iterator = dataSet.iterator();
436+
int count = 0;
437+
while (iterator.next()) {
438+
count++;
439+
Assert.assertFalse(iterator.isNull("root.sg.d1.s1"));
440+
Assert.assertEquals(1, iterator.getInt("root.sg.d1.s1"));
441+
Assert.assertFalse(iterator.isNull("root.sg.d1.s2"));
442+
Assert.assertEquals(1L, iterator.getLong("root.sg.d1.s2"));
443+
Assert.assertFalse(iterator.isNull("root.sg.d1.s3"));
444+
Assert.assertEquals(0, iterator.getFloat("root.sg.d1.s3"), 0.01);
445+
Assert.assertFalse(iterator.isNull("root.sg.d1.s4"));
446+
Assert.assertEquals(0, iterator.getDouble("root.sg.d1.s4"), 0.01);
447+
Assert.assertFalse(iterator.isNull("root.sg.d1.s5"));
448+
Assert.assertEquals("text_value", iterator.getString("root.sg.d1.s5"));
449+
Assert.assertFalse(iterator.isNull("root.sg.d1.s6"));
450+
Assert.assertTrue(iterator.getBoolean("root.sg.d1.s6"));
451+
Assert.assertFalse(iterator.isNull("root.sg.d1.s7"));
452+
Assert.assertEquals(new Timestamp(1), iterator.getTimestamp("root.sg.d1.s7"));
453+
Assert.assertFalse(iterator.isNull("root.sg.d1.s8"));
454+
Assert.assertEquals(new Binary(new byte[] {1}), iterator.getBlob("root.sg.d1.s8"));
455+
Assert.assertFalse(iterator.isNull("root.sg.d1.s9"));
456+
Assert.assertEquals("string_value", iterator.getString("root.sg.d1.s9"));
457+
Assert.assertFalse(iterator.isNull("root.sg.d1.s10"));
458+
Assert.assertEquals(
459+
DateUtils.parseIntToLocalDate(20250403), iterator.getDate("root.sg.d1.s10"));
460+
Assert.assertTrue(iterator.isNull("root.sg.d1.s11"));
461+
Assert.assertNull(iterator.getTimestamp("root.sg.d1.s11"));
462+
463+
Assert.assertEquals(new Timestamp(0), iterator.getTimestamp("Time"));
464+
Assert.assertFalse(iterator.isNull("Time"));
465+
}
466+
Assert.assertEquals(tablet.rowSize, count);
467+
}
468+
}
469+
470+
private static void constructSessionPool() {
471+
List<String> nodeUrls = new ArrayList<>();
472+
nodeUrls.add("127.0.0.1:6667");
473+
sessionPool =
474+
new SessionPool.Builder()
475+
.nodeUrls(nodeUrls)
476+
.user("root")
477+
.password("root")
478+
.maxSize(3)
479+
.build();
480+
}
481+
482+
public static void closeSessionPool() {
483+
sessionPool.close();
484+
}
485+
}
486+
```
487+
364488
### 3 Native Interface Description
365489

366490
#### 3.1 Parameter List

0 commit comments

Comments
 (0)