diff --git a/src/connector/jdbc/deploy-pom.xml b/src/connector/jdbc/deploy-pom.xml
index b73bb010e0..766a58f9ba 100755
--- a/src/connector/jdbc/deploy-pom.xml
+++ b/src/connector/jdbc/deploy-pom.xml
@@ -93,14 +93,13 @@
3.6.1
UTF-8
- 11
- 11
+ 8
+ 8
true
true
-
org.apache.maven.plugins
maven-source-plugin
diff --git a/src/connector/jdbc/src/main/java/com/taosdata/jdbc/utils/SqlSyntaxValidator.java b/src/connector/jdbc/src/main/java/com/taosdata/jdbc/utils/SqlSyntaxValidator.java
index 7e144cbe0f..066dfad5d5 100644
--- a/src/connector/jdbc/src/main/java/com/taosdata/jdbc/utils/SqlSyntaxValidator.java
+++ b/src/connector/jdbc/src/main/java/com/taosdata/jdbc/utils/SqlSyntaxValidator.java
@@ -23,6 +23,7 @@ import java.sql.SQLException;
public class SqlSyntaxValidator {
private TSDBConnection tsdbConnection;
+
public SqlSyntaxValidator(Connection connection) {
this.tsdbConnection = (TSDBConnection) connection;
}
diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/BaseTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/BaseTest.java
index 6c3437186f..b793a47c99 100644
--- a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/BaseTest.java
+++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/BaseTest.java
@@ -8,8 +8,7 @@ import org.junit.BeforeClass;
public class BaseTest {
private static boolean testCluster = false;
- private static TDNodes nodes = new TDNodes();
-
+ private static TDNodes nodes = new TDNodes();
@BeforeClass
public static void setupEnv() {
@@ -19,11 +18,9 @@ public class BaseTest {
nodes.getTDNode(1).setRunning(1);
nodes.stop(1);
}
-
nodes.setTestCluster(testCluster);
nodes.deploy(1);
- nodes.start(1);
-
+ nodes.start(1);
} catch (Exception e) {
e.printStackTrace();
}
diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/BatchInsertTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/BatchInsertTest.java
index c49293c96b..7d96cbb538 100644
--- a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/BatchInsertTest.java
+++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/BatchInsertTest.java
@@ -7,13 +7,11 @@ import org.junit.Test;
import java.sql.*;
import java.util.Properties;
import java.util.Random;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
import static org.junit.Assert.assertEquals;
-import java.util.Properties;
-import java.util.concurrent.Executors;
-import java.util.concurrent.*;
-
-import static org.junit.Assert.assertTrue;
public class BatchInsertTest extends BaseTest {
diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/SelectTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/SelectTest.java
index 1844a92b47..6c75860e0f 100644
--- a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/SelectTest.java
+++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/SelectTest.java
@@ -34,7 +34,6 @@ public class SelectTest extends BaseTest {
statement.executeUpdate("drop database if exists " + dbName);
statement.executeUpdate("create database if not exists " + dbName);
statement.executeUpdate("create table if not exists " + dbName + "." + tName + " (ts timestamp, k int, v int)");
-
}
@Test
@@ -66,6 +65,5 @@ public class SelectTest extends BaseTest {
statement.close();
connection.close();
Thread.sleep(10);
-
}
}
diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/BatchInsertTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/BatchInsertTest.java
new file mode 100644
index 0000000000..9608c4985d
--- /dev/null
+++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/cases/BatchInsertTest.java
@@ -0,0 +1,108 @@
+package com.taosdata.jdbc.cases;
+
+import com.taosdata.jdbc.lib.TSDBCommon;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Random;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+import static org.junit.Assert.assertEquals;
+
+public class BatchInsertTest {
+
+ static String host = "localhost";
+ static String dbName = "test";
+ static String stbName = "meters";
+ static int numOfTables = 30;
+ final static int numOfRecordsPerTable = 1000;
+ static long ts = 1496732686000l;
+ final static String tablePrefix = "t";
+
+ private Connection connection;
+
+ @Before
+ public void before() {
+ try {
+ connection = TSDBCommon.getConn(host);
+ TSDBCommon.createDatabase(connection, dbName);
+ TSDBCommon.createStable(connection, stbName);
+ TSDBCommon.createTables(connection, numOfTables, stbName, tablePrefix);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Test
+ public void testBatchInsert(){
+ ExecutorService executorService = Executors.newFixedThreadPool(numOfTables);
+ for (int i = 0; i < numOfTables; i++) {
+ final int index = i;
+ executorService.execute(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ long startTime = System.currentTimeMillis();
+ Statement statement = connection.createStatement(); // get statement
+ StringBuilder sb = new StringBuilder();
+ sb.append("INSERT INTO " + tablePrefix + index + " VALUES");
+ Random rand = new Random();
+ for (int j = 1; j <= numOfRecordsPerTable; j++) {
+ sb.append("(" + (ts + j) + ", ");
+ sb.append(rand.nextInt(100) + ", ");
+ sb.append(rand.nextInt(100) + ", ");
+ sb.append(rand.nextInt(100) + ")");
+ }
+ statement.addBatch(sb.toString());
+ statement.executeBatch();
+ long endTime = System.currentTimeMillis();
+ System.out.println("Thread " + index + " takes " + (endTime - startTime) + " microseconds");
+ connection.commit();
+ statement.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ });
+ }
+
+ executorService.shutdown();
+ try {
+ executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ try{
+ Statement statement = connection.createStatement();
+ ResultSet rs = statement.executeQuery("select * from meters");
+ int num = 0;
+ while (rs.next()) {
+ num++;
+ }
+ assertEquals(num, numOfTables * numOfRecordsPerTable);
+ rs.close();
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+ @After
+ public void after() {
+ try {
+ if (connection != null)
+ connection.close();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+}
diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/lib/TSDBCommon.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/lib/TSDBCommon.java
new file mode 100644
index 0000000000..0e2613d617
--- /dev/null
+++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/lib/TSDBCommon.java
@@ -0,0 +1,47 @@
+package com.taosdata.jdbc.lib;
+
+import com.taosdata.jdbc.TSDBDriver;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Properties;
+
+public class TSDBCommon {
+
+ public static Connection getConn(String host) throws SQLException, ClassNotFoundException {
+ Class.forName("com.taosdata.jdbc.TSDBDriver");
+ Properties properties = new Properties();
+ properties.setProperty(TSDBDriver.PROPERTY_KEY_HOST, host);
+ properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
+ properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
+ properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
+ return DriverManager.getConnection("jdbc:TAOS://" + host + ":0/", properties);
+ }
+
+ public static void createDatabase(Connection connection, String dbName) throws SQLException {
+ Statement statement = connection.createStatement();
+ statement.executeUpdate("drop database if exists " + dbName);
+ statement.executeUpdate("create database if not exists " + dbName);
+ statement.executeUpdate("use " + dbName);
+ statement.close();
+ }
+
+ public static void createStable(Connection connection, String stbName) throws SQLException {
+ Statement statement = connection.createStatement();
+ String createTableSql = "create table " + stbName + "(ts timestamp, f1 int, f2 int, f3 int) tags(areaid int, loc binary(20))";
+ statement.executeUpdate(createTableSql);
+ statement.close();
+ }
+
+ public static void createTables(Connection connection, int numOfTables, String stbName,String tablePrefix) throws SQLException {
+ Statement statement = connection.createStatement();
+ for(int i = 0; i < numOfTables; i++) {
+ String loc = i % 2 == 0 ? "beijing" : "shanghai";
+ String createSubTalbesSql = "create table " + tablePrefix + i + " using " + stbName + " tags(" + i + ", '" + loc + "')";
+ statement.executeUpdate(createSubTalbesSql);
+ }
+ statement.close();
+ }
+}