Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 35 additions & 11 deletions docs/Documentation-CHN/UserGuide/7-Session API/1-Session API.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,11 @@ In root directory:


```Java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import org.apache.iotdb.session.IoTDBSessionException;
import org.apache.iotdb.session.Session;
import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
import org.apache.iotdb.tsfile.write.record.RowBatch;
Expand All @@ -61,15 +62,39 @@ import org.apache.iotdb.tsfile.write.schema.Schema;

public class SessionExample {

public static void main(String[] args) throws ClassNotFoundException, IoTDBSessionException {
Session session = new Session("127.0.0.1", 6667, "root", "root");
private static Session session;

public static void main(String[] args) throws IoTDBSessionException {
session = new Session("127.0.0.1", 6667, "root", "root");
session.open();

session.setStorageGroup("root.sg1");
session.createTimeseriesResp("root.sg1.d1.s1", TSDataType.INT64, TSEncoding.RLE);
session.createTimeseriesResp("root.sg1.d1.s2", TSDataType.INT64, TSEncoding.RLE);
session.createTimeseriesResp("root.sg1.d1.s3", TSDataType.INT64, TSEncoding.RLE);
session.createTimeseries("root.sg1.d1.s1", TSDataType.INT64, TSEncoding.RLE, CompressionType.SNAPPY);
session.createTimeseries("root.sg1.d1.s2", TSDataType.INT64, TSEncoding.RLE, CompressionType.SNAPPY);
session.createTimeseries("root.sg1.d1.s3", TSDataType.INT64, TSEncoding.RLE, CompressionType.SNAPPY);

insert();
// insertRowBatch();

session.close();
}

private static void insert() throws IoTDBSessionException {
String deviceId = "root.sg1.d1";
List<String> measurements = new ArrayList<>();
measurements.add("s1");
measurements.add("s2");
measurements.add("s3");
for (long time = 0; time < 30000; time++) {
List<String> values = new ArrayList<>();
values.add("1");
values.add("2");
values.add("3");
session.insert(deviceId, time, measurements, values);
}
}

private static void insertRowBatch() throws IoTDBSessionException {
Schema schema = new Schema();
schema.registerMeasurement(new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.RLE));
schema.registerMeasurement(new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.RLE));
Expand All @@ -85,7 +110,7 @@ public class SessionExample {
timestamps[row] = time;
for (int i = 0; i < 3; i++) {
long[] sensor = (long[]) values[i];
sensor[row] = time;
sensor[row] = i;
}
if (rowBatch.batchSize == rowBatch.getMaxBatchSize()) {
session.insertBatch(rowBatch);
Expand All @@ -97,7 +122,6 @@ public class SessionExample {
session.insertBatch(rowBatch);
rowBatch.reset();
}
session.close();
}
}
```
Expand Down
47 changes: 35 additions & 12 deletions docs/Documentation/UserGuide/7-Session API/1-Session API.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,11 @@ This chapter provides an example of how to open an IoTDB session, execute a batc
Requires that you include the packages containing the Client classes needed for database programming.

```Java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import org.apache.iotdb.session.IoTDBSessionException;
import org.apache.iotdb.session.Session;
import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
import org.apache.iotdb.tsfile.write.record.RowBatch;
Expand All @@ -70,15 +71,39 @@ import org.apache.iotdb.tsfile.write.schema.Schema;

public class SessionExample {

public static void main(String[] args) throws ClassNotFoundException, IoTDBSessionException {
Session session = new Session("127.0.0.1", 6667, "root", "root");
private static Session session;

public static void main(String[] args) throws IoTDBSessionException {
session = new Session("127.0.0.1", 6667, "root", "root");
session.open();

session.setStorageGroup("root.sg1");
session.createTimeseriesResp("root.sg1.d1.s1", TSDataType.INT64, TSEncoding.RLE);
session.createTimeseriesResp("root.sg1.d1.s2", TSDataType.INT64, TSEncoding.RLE);
session.createTimeseriesResp("root.sg1.d1.s3", TSDataType.INT64, TSEncoding.RLE);
session.createTimeseries("root.sg1.d1.s1", TSDataType.INT64, TSEncoding.RLE, CompressionType.SNAPPY);
session.createTimeseries("root.sg1.d1.s2", TSDataType.INT64, TSEncoding.RLE, CompressionType.SNAPPY);
session.createTimeseries("root.sg1.d1.s3", TSDataType.INT64, TSEncoding.RLE, CompressionType.SNAPPY);

insert();
// insertRowBatch();

session.close();
}

private static void insert() throws IoTDBSessionException {
String deviceId = "root.sg1.d1";
List<String> measurements = new ArrayList<>();
measurements.add("s1");
measurements.add("s2");
measurements.add("s3");
for (long time = 0; time < 30000; time++) {
List<String> values = new ArrayList<>();
values.add("1");
values.add("2");
values.add("3");
session.insert(deviceId, time, measurements, values);
}
}

private static void insertRowBatch() throws IoTDBSessionException {
Schema schema = new Schema();
schema.registerMeasurement(new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.RLE));
schema.registerMeasurement(new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.RLE));
Expand All @@ -94,7 +119,7 @@ public class SessionExample {
timestamps[row] = time;
for (int i = 0; i < 3; i++) {
long[] sensor = (long[]) values[i];
sensor[row] = time;
sensor[row] = i;
}
if (rowBatch.batchSize == rowBatch.getMaxBatchSize()) {
session.insertBatch(rowBatch);
Expand All @@ -106,8 +131,6 @@ public class SessionExample {
session.insertBatch(rowBatch);
rowBatch.reset();
}

session.close();
}
}
```
Expand Down
31 changes: 28 additions & 3 deletions example/session/src/main/java/org/apache/iotdb/SessionExample.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
*/
package org.apache.iotdb;

import java.util.ArrayList;
import java.util.List;
import org.apache.iotdb.session.IoTDBSessionException;
import org.apache.iotdb.session.Session;
import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
Expand All @@ -29,15 +31,39 @@

public class SessionExample {

private static Session session;

public static void main(String[] args) throws IoTDBSessionException {
Session session = new Session("127.0.0.1", 6667, "root", "root");
session = new Session("127.0.0.1", 6667, "root", "root");
session.open();

session.setStorageGroup("root.sg1");
session.createTimeseries("root.sg1.d1.s1", TSDataType.INT64, TSEncoding.RLE, CompressionType.SNAPPY);
session.createTimeseries("root.sg1.d1.s2", TSDataType.INT64, TSEncoding.RLE, CompressionType.SNAPPY);
session.createTimeseries("root.sg1.d1.s3", TSDataType.INT64, TSEncoding.RLE, CompressionType.SNAPPY);

insert();
// insertRowBatch();

session.close();
}

private static void insert() throws IoTDBSessionException {
String deviceId = "root.sg1.d1";
List<String> measurements = new ArrayList<>();
measurements.add("s1");
measurements.add("s2");
measurements.add("s3");
for (long time = 0; time < 30000; time++) {
List<String> values = new ArrayList<>();
values.add("1");
values.add("2");
values.add("3");
session.insert(deviceId, time, measurements, values);
}
}

private static void insertRowBatch() throws IoTDBSessionException {
Schema schema = new Schema();
schema.registerMeasurement(new MeasurementSchema("s1", TSDataType.INT64, TSEncoding.RLE));
schema.registerMeasurement(new MeasurementSchema("s2", TSDataType.INT64, TSEncoding.RLE));
Expand All @@ -53,7 +79,7 @@ public static void main(String[] args) throws IoTDBSessionException {
timestamps[row] = time;
for (int i = 0; i < 3; i++) {
long[] sensor = (long[]) values[i];
sensor[row] = time;
sensor[row] = i;
}
if (rowBatch.batchSize == rowBatch.getMaxBatchSize()) {
session.insertBatch(rowBatch);
Expand All @@ -65,6 +91,5 @@ public static void main(String[] args) throws IoTDBSessionException {
session.insertBatch(rowBatch);
rowBatch.reset();
}
session.close();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -930,6 +930,7 @@ public ServerProperties getProperties() {

@Override
public TSExecuteStatementResp insert(TSInsertionReq req) {
// TODO need to refactor this when implementing PreparedStatement
if (!checkLogin()) {
logger.info(INFO_NOT_LOGIN, IoTDBConstant.GLOBAL_DB_NAME);
return getTSExecuteStatementResp(getStatus(TSStatusType.NOT_LOGIN_ERROR));
Expand Down Expand Up @@ -960,6 +961,26 @@ public TSExecuteStatementResp insert(TSInsertionReq req) {
}
}

@Override
public TSRPCResp insertRow(TSInsertReq req) throws TException {
if (!checkLogin()) {
logger.info(INFO_NOT_LOGIN, IoTDBConstant.GLOBAL_DB_NAME);
return new TSRPCResp(getStatus(TSStatusType.NOT_LOGIN_ERROR));
}

InsertPlan plan = new InsertPlan();
plan.setDeviceId(req.getDeviceId());
plan.setTime(req.getTimestamp());
plan.setMeasurements(req.getMeasurements().toArray(new String[0]));
plan.setValues(req.getValues().toArray(new String[0]));

TS_Status status = checkAuthority(plan);
if (status != null) {
return new TSRPCResp(status);
}
return new TSRPCResp(executePlan(plan));
}

@Override
public TSExecuteBatchStatementResp insertBatch(TSBatchInsertionReq req) {
long t1 = System.currentTimeMillis();
Expand Down
9 changes: 9 additions & 0 deletions service-rpc/src/main/thrift/rpc.thrift
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,13 @@ struct TSBatchInsertionReq {
6: required i32 size
}

struct TSInsertReq {
1: required string deviceId
2: required list<string> measurements
3: required list<string> values
4: required i64 timestamp
}

struct TSSetStorageGroupReq {
1: required string storageGroupId
}
Expand Down Expand Up @@ -292,5 +299,7 @@ service TSIService {

TSRPCResp createTimeseries(1:TSCreateTimeseriesReq req);

TSRPCResp insertRow(1:TSInsertReq req);

i64 requestStatementId();
}
16 changes: 16 additions & 0 deletions session/src/main/java/org/apache/iotdb/session/Session.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
*/
package org.apache.iotdb.session;

import java.util.List;
import org.apache.iotdb.rpc.IoTDBRPCException;
import org.apache.iotdb.rpc.RpcUtils;
import org.apache.iotdb.service.rpc.thrift.*;
Expand Down Expand Up @@ -156,6 +157,21 @@ public TSExecuteBatchStatementResp insertBatch(RowBatch rowBatch) throws IoTDBSe
}
}

public TSRPCResp insert(String deviceId, long time, List<String> measurements, List<String> values)
throws IoTDBSessionException {
TSInsertReq request = new TSInsertReq();
request.setDeviceId(deviceId);
request.setTimestamp(time);
request.setMeasurements(measurements);
request.setValues(values);

try {
return client.insertRow(request);
} catch (TException e) {
throw new IoTDBSessionException(e);
}
}

public TSRPCResp setStorageGroup(String storageGroupId) throws IoTDBSessionException {
TSSetStorageGroupReq request = new TSSetStorageGroupReq();
request.setStorageGroupId(storageGroupId);
Expand Down