You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@iotdb.apache.org by "changxue (Jira)" <ji...@apache.org> on 2023/02/22 01:36:00 UTC
[jira] [Assigned] (IOTDB-5569) [session]SessionDataSet should more friendly to user
[ https://issues.apache.org/jira/browse/IOTDB-5569?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
changxue reassigned IOTDB-5569:
-------------------------------
Assignee: Haonan Hou (was: Yukun Zhou)
> [session]SessionDataSet should more friendly to user
> ----------------------------------------------------
>
> Key: IOTDB-5569
> URL: https://issues.apache.org/jira/browse/IOTDB-5569
> Project: Apache IoTDB
> Issue Type: Improvement
> Reporter: changxue
> Assignee: Haonan Hou
> Priority: Major
>
> SessionDataSet should more friendly to user
> When I get the result of an sql statement with session.executeQueryStatement(sql), I'm confusing with how can I get the proper result of different result.
> There are 2 kinds of result:
> # select * from root.xx;
> {code:java}
> String sql="select count(*) from root.ln.wf01.wt01;";
> SessionDataSet records = session.executeQueryStatement(sql);
> SessionDataSet.DataIterator recordsIter = records.iterator();
> int count = 0;
> while (recordsIter.next()) {
> // I must know data type previously and I'm confusing of the index, it's only for int values or for all columns.
> count = recordsIter.getInt(1);
> System.out.println(count);
> }{code}
> # select last(*) from root.xx;
> {code:java}
> // IoTDB> select last(*) from root.ln.wf01.wt01
> // +-----------------------------+-----------------------------+-----+--------+
> // | Time| Timeseries|Value|DataType|
> // +-----------------------------+-----------------------------+-----+--------+
> // |1970-01-01T08:00:00.001+08:00|root.ln.wf01.wt01.temperature| 2.6| FLOAT|
> //|1970-01-01T08:00:00.001+08:00| root.ln.wf01.wt01.status| true| BOOLEAN|
> // +-----------------------------+-----------------------------+-----+--------+
> // Total line number = 2
> // It costs 0.016s
> // IoTDB> select * from root.ln.wf01.wt01;
> // +-----------------------------+-----------------------------+------------------------+
> // | Time|root.ln.wf01.wt01.temperature|root.ln.wf01.wt01.status|
> // +-----------------------------+-----------------------------+------------------------+
> // |1970-01-01T08:00:00.001+08:00| 2.6| true|
> // +-----------------------------+-----------------------------+------------------------+
> String sql = "select last(*) from root.ln.wf01.wt01";
> SessionDataSet dataSet = session.executeQueryStatement(sql);
> while (dataSet.hasNext()) {
> RowRecord records = dataSet.next();
> out.println(records.getFields().get(0).getStringValue());
> // string value is available, but if I'd like to get specified data type like FLOAT, I must add switch statement.It's a bad experience. out.println(records.getFields().get(1).getStringValue());
> // useless, return the default initialized value
> out.println(records.getFields().get(1).getObjectValue(TSDataType.BOOLEAN));
> // out.println(records.getFields().get(1).toString());
> } {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)