From 24cb0cd8844fbe79d93cab1bfd8042365c3da929 Mon Sep 17 00:00:00 2001 From: huolibo Date: Sat, 9 Oct 2021 17:37:22 +0800 Subject: [PATCH] [TD-10424]:add openTSDBStatement for openTSDB format --- .../jdbc/AbstractStatementWrapper.java | 55 +++++++++++++++++++ .../com/taosdata/jdbc/OpenTSDBStatement.java | 42 ++++++++++++++ .../com/taosdata/jdbc/TSDBErrorNumbers.java | 2 + .../taosdata/jdbc/OpenTSDBMigrateTest.java | 8 +-- 4 files changed, 103 insertions(+), 4 deletions(-) create mode 100644 src/connector/jdbc/src/main/java/com/taosdata/jdbc/AbstractStatementWrapper.java create mode 100644 src/connector/jdbc/src/main/java/com/taosdata/jdbc/OpenTSDBStatement.java diff --git a/src/connector/jdbc/src/main/java/com/taosdata/jdbc/AbstractStatementWrapper.java b/src/connector/jdbc/src/main/java/com/taosdata/jdbc/AbstractStatementWrapper.java new file mode 100644 index 0000000000..4ca3a3c2a0 --- /dev/null +++ b/src/connector/jdbc/src/main/java/com/taosdata/jdbc/AbstractStatementWrapper.java @@ -0,0 +1,55 @@ +package com.taosdata.jdbc; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +public class AbstractStatementWrapper extends AbstractStatement{ + + protected Statement statement; + + public AbstractStatementWrapper(Statement statement) { + this.statement = statement; + } + + @Override + public ResultSet executeQuery(String sql) throws SQLException { + return statement.executeQuery(sql); + } + + @Override + public int executeUpdate(String sql) throws SQLException { + return statement.executeUpdate(sql); + } + + @Override + public void close() throws SQLException { + statement.close(); + } + + @Override + public boolean execute(String sql) throws SQLException { + return statement.execute(sql); + } + + @Override + public ResultSet getResultSet() throws SQLException { + return statement.getResultSet(); + } + + @Override + public int getUpdateCount() throws SQLException { + return statement.getUpdateCount(); + } + + @Override + public Connection getConnection() throws SQLException { + return statement.getConnection(); + } + + @Override + public boolean isClosed() throws SQLException { + return statement.isClosed(); + } +} diff --git a/src/connector/jdbc/src/main/java/com/taosdata/jdbc/OpenTSDBStatement.java b/src/connector/jdbc/src/main/java/com/taosdata/jdbc/OpenTSDBStatement.java new file mode 100644 index 0000000000..ac6784f3ea --- /dev/null +++ b/src/connector/jdbc/src/main/java/com/taosdata/jdbc/OpenTSDBStatement.java @@ -0,0 +1,42 @@ +package com.taosdata.jdbc; + +import com.taosdata.jdbc.rs.RestfulConnection; + +import java.sql.Connection; +import java.sql.SQLException; +import java.sql.Statement; + +public class OpenTSDBStatement extends AbstractStatementWrapper { + + public OpenTSDBStatement(Statement statement) { + super(statement); + } + + public void executeTelnetPut(String[] strings) throws SQLException { + Connection connection = this.getConnection(); + if (connection instanceof TSDBConnection) { + TSDBConnection tsdbConnection = (TSDBConnection) connection; + tsdbConnection.getConnector().insertTelnetLines(strings); + } else if (connection instanceof RestfulConnection) { + throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_UNSUPPORTED_METHOD, "restful connection is not supported currently"); + } else { + throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_UNKNOWN_CONNECTION, "unknown connection:" + connection.getCatalog()); + } + } + + public void executeTelnetPut(String sql) throws SQLException { + executeTelnetPut(new String[]{sql}); + } + + public void executeInsertJsonPayload(String json) throws SQLException { + Connection connection = this.getConnection(); + if (connection instanceof TSDBConnection) { + TSDBConnection tsdbConnection = (TSDBConnection) connection; + tsdbConnection.getConnector().insertJsonPayload(json); + } else if (connection instanceof RestfulConnection) { + throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_UNSUPPORTED_METHOD, "restful connection is not supported currently"); + } else { + throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_UNKNOWN_CONNECTION, "unknown connection:" + connection.getCatalog()); + } + } +} diff --git a/src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBErrorNumbers.java b/src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBErrorNumbers.java index 0f4427fa20..e9df77b0d8 100644 --- a/src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBErrorNumbers.java +++ b/src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBErrorNumbers.java @@ -32,6 +32,7 @@ public class TSDBErrorNumbers { public static final int ERROR_USER_IS_REQUIRED = 0x2319; // user is required public static final int ERROR_PASSWORD_IS_REQUIRED = 0x231a; // password is required public static final int ERROR_INVALID_JSON_FORMAT = 0x231b; + public static final int ERROR_UNKNOWN_CONNECTION = 0x231c; public static final int ERROR_UNKNOWN = 0x2350; //unknown error @@ -74,6 +75,7 @@ public class TSDBErrorNumbers { errorNumbers.add(ERROR_USER_IS_REQUIRED); errorNumbers.add(ERROR_PASSWORD_IS_REQUIRED); errorNumbers.add(ERROR_INVALID_JSON_FORMAT); + errorNumbers.add(ERROR_UNKNOWN_CONNECTION); errorNumbers.add(ERROR_RESTFul_Client_Protocol_Exception); diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/OpenTSDBMigrateTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/OpenTSDBMigrateTest.java index 0bfb8d8d84..b181d95633 100644 --- a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/OpenTSDBMigrateTest.java +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/OpenTSDBMigrateTest.java @@ -23,7 +23,8 @@ public class OpenTSDBMigrateTest { }; // when - conn.getConnector().insertTelnetLines(lines); + OpenTSDBStatement statement = new OpenTSDBStatement(conn.createStatement()); + statement.executeTelnetPut(lines); // then Set collect = Arrays.stream(lines) @@ -31,7 +32,6 @@ public class OpenTSDBMigrateTest { .map(s -> s.split("\\s+")[0].replaceAll("\\.", "_")) .collect(Collectors.toSet()); - Statement statement = conn.createStatement(); ResultSet rs = statement.executeQuery("show stables"); Assert.assertNotNull(rs); ResultSetMetaData metaData = rs.getMetaData(); @@ -60,11 +60,11 @@ public class OpenTSDBMigrateTest { "}"; // when - conn.getConnector().insertJsonPayload(json); + OpenTSDBStatement statement = new OpenTSDBStatement(conn.createStatement()); + statement.executeInsertJsonPayload(json); // then JSONObject jObject = JSONObject.parseObject(json); - Statement statement = conn.createStatement(); ResultSet rs = statement.executeQuery("show stables"); Assert.assertNotNull(rs); ResultSetMetaData metaData = rs.getMetaData(); -- GitLab