diff --git a/src/connector/jdbc/src/main/java/com/taosdata/jdbc/SavedPreparedStatement.java b/src/connector/jdbc/src/main/java/com/taosdata/jdbc/SavedPreparedStatement.java index 5e4aacb8601a6a0cc3e82d3c2ac7640248c047ef..98c3fdd7fca9d0c92efbb8447e8938568e4bce6b 100644 --- a/src/connector/jdbc/src/main/java/com/taosdata/jdbc/SavedPreparedStatement.java +++ b/src/connector/jdbc/src/main/java/com/taosdata/jdbc/SavedPreparedStatement.java @@ -33,9 +33,9 @@ public class SavedPreparedStatement { /** * insert or import sql template pattern, the template are the following: - * + *

* insert/import into tableName [(field1, field2, ...)] [using stables tags(?, ?, ...) ] values(?, ?, ...) (?, ?, ...) - * + *

* we split it to three part: * 1. prefix, insert/import * 2. middle, tableName [(field1, field2, ...)] [using stables tags(?, ?, ...) ] @@ -70,9 +70,9 @@ public class SavedPreparedStatement { /** * default param value */ - private static final String DEFAULT_VALUE= "NULL"; + private static final String DEFAULT_VALUE = "NULL"; - private static final String PLACEHOLDER= "?"; + private static final String PLACEHOLDER = "?"; private String tableName; @@ -81,7 +81,7 @@ public class SavedPreparedStatement { */ private boolean isAddBatch; - public SavedPreparedStatement(String sql, TSDBPreparedStatement tsdbPreparedStatement)throws SQLException { + public SavedPreparedStatement(String sql, TSDBPreparedStatement tsdbPreparedStatement) throws SQLException { this.sql = sql; this.tsdbPreparedStatement = tsdbPreparedStatement; this.sqlParamList = new ArrayList<>(); @@ -91,17 +91,18 @@ public class SavedPreparedStatement { /** * parse the init param according the sql param + * * @param sql */ - private void parsePreparedParam(String sql)throws SQLException{ + private void parsePreparedParam(String sql) throws SQLException { Matcher matcher = sqlPattern.matcher(sql); - if(matcher.find()){ + if (matcher.find()) { tableName = matcher.group("tablename"); - if (tableName != null && PLACEHOLDER.equals(tableName)){ + if (tableName != null && PLACEHOLDER.equals(tableName)) { // the table name is dynamic this.isTableNameDynamic = true; } @@ -110,26 +111,26 @@ public class SavedPreparedStatement { middle = matcher.group(2); valueList = matcher.group("valueList"); - if(middle != null && !"".equals(middle)){ + if (middle != null && !"".equals(middle)) { middleParamSize = parsePlaceholder(middle); } - if(valueList != null && !"".equals(valueList)){ + if (valueList != null && !"".equals(valueList)) { valueListSize = parsePlaceholder(valueList); } initPreparedParam = initDefaultParam(tableName, middleParamSize, valueListSize); - }else{ + } else { // not match throw new SQLException(TSDBConstants.WrapErrMsg("the sql is not complete!")); } } - private TSDBPreparedParam initDefaultParam(String tableName, int middleParamSize, int valueListSize){ + private TSDBPreparedParam initDefaultParam(String tableName, int middleParamSize, int valueListSize) { - TSDBPreparedParam tsdbPreparedParam = new TSDBPreparedParam(tableName); + TSDBPreparedParam tsdbPreparedParam = new TSDBPreparedParam(tableName); tsdbPreparedParam.setMiddleParamList(getDefaultParamList(middleParamSize)); @@ -140,14 +141,15 @@ public class SavedPreparedStatement { /** * generate the default param value list + * * @param paramSize * @return */ - private List getDefaultParamList(int paramSize){ + private List getDefaultParamList(int paramSize) { List paramList = new ArrayList<>(paramSize); - if (paramSize > 0){ - for (int i = 0; i < paramSize; i++){ + if (paramSize > 0) { + for (int i = 0; i < paramSize; i++) { paramList.add(i, DEFAULT_VALUE); } } @@ -157,17 +159,18 @@ public class SavedPreparedStatement { /** * calculate the placeholder num + * * @param value * @return */ - private int parsePlaceholder(String value){ + private int parsePlaceholder(String value) { Pattern pattern = Pattern.compile("[?]"); Matcher matcher = pattern.matcher(value); int result = 0; - while (matcher.find()){ + while (matcher.find()) { result++; } return result; @@ -175,34 +178,35 @@ public class SavedPreparedStatement { /** * set current row params - * @param parameterIndex the first parameter is 1, the second is 2, ... - * @param x the parameter value + * + * @param parameterIndex the first parameter is 1, the second is 2, ... + * @param x the parameter value */ - public void setParam(int parameterIndex, Object x) throws SQLException{ + public void setParam(int parameterIndex, Object x) throws SQLException { int paramSize = this.middleParamSize + this.valueListSize; String errorMsg = String.format("the parameterIndex %s out of the range [1, %s]", parameterIndex, this.middleParamSize + this.valueListSize); - if (parameterIndex < 1 || parameterIndex > paramSize){ + if (parameterIndex < 1 || parameterIndex > paramSize) { throw new SQLException(TSDBConstants.WrapErrMsg(errorMsg)); } this.isAddBatch = false; //set isAddBatch to false - if (x == null){ + if (x == null) { x = DEFAULT_VALUE; // set default null string } - parameterIndex = parameterIndex -1; // start from 0 in param list + parameterIndex = parameterIndex - 1; // start from 0 in param list - if (this.middleParamSize != 0 && parameterIndex >= 0 && parameterIndex < this.middleParamSize){ + if (this.middleParamSize != 0 && parameterIndex >= 0 && parameterIndex < this.middleParamSize) { this.initPreparedParam.setMiddleParam(parameterIndex, x); return; } - if (this.valueListSize != 0 && parameterIndex >= this.middleParamSize && parameterIndex < (this.middleParamSize + this.valueListSize)){ + if (this.valueListSize != 0 && parameterIndex >= this.middleParamSize && parameterIndex < paramSize) { this.initPreparedParam.setValueParam(parameterIndex - this.middleParamSize, x); return; @@ -220,9 +224,9 @@ public class SavedPreparedStatement { /** * add current param to batch list */ - private void addCurrentRowParamToList(){ + private void addCurrentRowParamToList() { - if (initPreparedParam != null && (this.middleParamSize > 0 || this.valueListSize > 0)){ + if (initPreparedParam != null && (this.middleParamSize > 0 || this.valueListSize > 0)) { this.sqlParamList.add(initPreparedParam); // add current param to batch list } this.isAddBatch = true; @@ -231,6 +235,7 @@ public class SavedPreparedStatement { /** * execute the sql with batch sql + * * @return * @throws SQLException */ @@ -238,13 +243,13 @@ public class SavedPreparedStatement { int result = executeBatchInternal(); - return new int[]{result}; + return new int[]{result}; } - public int executeBatchInternal() throws SQLException{ + public int executeBatchInternal() throws SQLException { - if (!isAddBatch){ + if (!isAddBatch) { addCurrentRowParamToList(); // add current param to batch list } @@ -262,26 +267,27 @@ public class SavedPreparedStatement { /** * generate the batch sql + * * @return */ - private String generateExecuteSql(){ + private String generateExecuteSql() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(prefix); stringBuilder.append(" into "); - if (!isTableNameDynamic){ + if (!isTableNameDynamic) { // tablename will not need to be replaced stringBuilder.append(middle); stringBuilder.append(" values"); stringBuilder.append(replaceValueListParam(valueList, sqlParamList)); - } else{ + } else { // need to replace tablename - if (sqlParamList.size() > 0 ){ + if (sqlParamList.size() > 0) { TSDBPreparedParam firstPreparedParam = sqlParamList.get(0); @@ -292,12 +298,12 @@ public class SavedPreparedStatement { //the first param in the middleParamList is the tableName String lastTableName = firstPreparedParam.getMiddleParamList().get(0).toString(); - if (sqlParamList.size() > 1){ + if (sqlParamList.size() > 1) { - for (int i = 1; i < sqlParamList.size(); i++){ + for (int i = 1; i < sqlParamList.size(); i++) { TSDBPreparedParam currentParam = sqlParamList.get(i); String currentTableName = currentParam.getMiddleParamList().get(0).toString(); - if (lastTableName.equalsIgnoreCase(currentTableName)){ + if (lastTableName.equalsIgnoreCase(currentTableName)) { // tablename is same with the last row ,so only need to append the part of value String values = replaceTemplateParam(valueList, currentParam.getValueList()); @@ -313,7 +319,7 @@ public class SavedPreparedStatement { } } - }else{ + } else { stringBuilder.append(middle); stringBuilder.append(" values"); @@ -327,10 +333,11 @@ public class SavedPreparedStatement { /** * replace the middle and value part + * * @param tsdbPreparedParam * @return */ - private String replaceMiddleAndValuePart(TSDBPreparedParam tsdbPreparedParam){ + private String replaceMiddleAndValuePart(TSDBPreparedParam tsdbPreparedParam) { StringBuilder stringBuilder = new StringBuilder(" "); @@ -348,17 +355,18 @@ public class SavedPreparedStatement { /** * replace the placeholder of the template with TSDBPreparedParam list + * * @param template * @param sqlParamList * @return */ - private String replaceValueListParam(String template, List sqlParamList){ + private String replaceValueListParam(String template, List sqlParamList) { StringBuilder stringBuilder = new StringBuilder(); - if (sqlParamList.size() > 0 ){ + if (sqlParamList.size() > 0) { - for (TSDBPreparedParam tsdbPreparedParam : sqlParamList){ + for (TSDBPreparedParam tsdbPreparedParam : sqlParamList) { String tmp = replaceTemplateParam(template, tsdbPreparedParam.getValueList()); @@ -374,13 +382,14 @@ public class SavedPreparedStatement { /** * replace the placeholder of the template with paramList + * * @param template * @param paramList * @return */ - private String replaceTemplateParam(String template, List paramList){ + private String replaceTemplateParam(String template, List paramList) { - if (paramList.size() > 0){ + if (paramList.size() > 0) { String tmp = template; @@ -402,20 +411,21 @@ public class SavedPreparedStatement { /** * get the string of param object + * * @param paramObj * @return */ - private String getParamString(Object paramObj){ + private String getParamString(Object paramObj) { String paraStr = paramObj.toString(); if (paramObj instanceof Timestamp || (paramObj instanceof String && !DEFAULT_VALUE.equalsIgnoreCase(paraStr))) { paraStr = "'" + paraStr + "'"; } - return paraStr; + return paraStr; } - private int executeSql(String sql)throws SQLException{ + private int executeSql(String sql) throws SQLException { return tsdbPreparedStatement.executeUpdate(sql); } diff --git a/src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBPreparedStatement.java b/src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBPreparedStatement.java index 674908679c128b54b2a8870080a4a921198dd6eb..6097ad9c43f517f19c42da94c865a5c1caae65ea 100644 --- a/src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBPreparedStatement.java +++ b/src/connector/jdbc/src/main/java/com/taosdata/jdbc/TSDBPreparedStatement.java @@ -30,58 +30,59 @@ import java.util.regex.Pattern; * compatibility needs. */ public class TSDBPreparedStatement extends TSDBStatement implements PreparedStatement { - protected String rawSql; - protected String sql; - protected ArrayList parameters = new ArrayList(); + protected String rawSql; + protected String sql; + protected ArrayList parameters = new ArrayList(); - //start with insert or import and is case-insensitive - private static Pattern savePattern = Pattern.compile("(?i)^\\s*(insert|import)"); + //start with insert or import and is case-insensitive + private static Pattern savePattern = Pattern.compile("(?i)^\\s*(insert|import)"); - // is insert or import - private boolean isSaved; + // is insert or import + private boolean isSaved; - private SavedPreparedStatement savedPreparedStatement; + private SavedPreparedStatement savedPreparedStatement; - TSDBPreparedStatement(TSDBJNIConnector connecter, String sql) { + TSDBPreparedStatement(TSDBJNIConnector connecter, String sql) { super(connecter); - init(sql); - } - - private void init(String sql){ - this.rawSql = sql; - preprocessSql(); - - this.isSaved = isSavedSql(this.rawSql); - if (this.isSaved){ - - try { - this.savedPreparedStatement = new SavedPreparedStatement(this.rawSql, this); - } catch (SQLException e){ - e.printStackTrace(); - } - } - } - - /** - * if the precompiled sql is insert or import - * @param sql - * @return - */ - private boolean isSavedSql(String sql){ - Matcher matcher = savePattern.matcher(sql); - return matcher.find(); - } - - @Override - public int[] executeBatch() throws SQLException { - if (isSaved){ - return this.savedPreparedStatement.executeBatch(); - } else { - return super.executeBatch(); - } - } - - public ArrayList getParameters() { + init(sql); + } + + private void init(String sql) { + this.rawSql = sql; + preprocessSql(); + + this.isSaved = isSavedSql(this.rawSql); + if (this.isSaved) { + + try { + this.savedPreparedStatement = new SavedPreparedStatement(this.rawSql, this); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + /** + * if the precompiled sql is insert or import + * + * @param sql + * @return + */ + private boolean isSavedSql(String sql) { + Matcher matcher = savePattern.matcher(sql); + return matcher.find(); + } + + @Override + public int[] executeBatch() throws SQLException { + if (isSaved) { + return this.savedPreparedStatement.executeBatch(); + } else { + return super.executeBatch(); + } + } + + public ArrayList getParameters() { return parameters; } @@ -101,41 +102,41 @@ public class TSDBPreparedStatement extends TSDBStatement implements PreparedStat private void preprocessSql() { /***** For processing some of Spark SQLs*****/ - // should replace it first - this.rawSql = this.rawSql.replaceAll("or (.*) is null", ""); - this.rawSql = this.rawSql.replaceAll(" where ", " WHERE "); - this.rawSql = this.rawSql.replaceAll(" or ", " OR "); - this.rawSql = this.rawSql.replaceAll(" and ", " AND "); - this.rawSql = this.rawSql.replaceAll(" is null", " IS NULL"); - this.rawSql = this.rawSql.replaceAll(" is not null", " IS NOT NULL"); + // should replace it first + this.rawSql = this.rawSql.replaceAll("or (.*) is null", ""); + this.rawSql = this.rawSql.replaceAll(" where ", " WHERE "); + this.rawSql = this.rawSql.replaceAll(" or ", " OR "); + this.rawSql = this.rawSql.replaceAll(" and ", " AND "); + this.rawSql = this.rawSql.replaceAll(" is null", " IS NULL"); + this.rawSql = this.rawSql.replaceAll(" is not null", " IS NOT NULL"); - // SELECT * FROM db.tb WHERE 1=0 - this.rawSql = this.rawSql.replaceAll("WHERE 1=0", "WHERE _c0=1"); - this.rawSql = this.rawSql.replaceAll("WHERE 1=2", "WHERE _c0=1"); + // SELECT * FROM db.tb WHERE 1=0 + this.rawSql = this.rawSql.replaceAll("WHERE 1=0", "WHERE _c0=1"); + this.rawSql = this.rawSql.replaceAll("WHERE 1=2", "WHERE _c0=1"); - // SELECT "ts","val" FROM db.tb - this.rawSql = this.rawSql.replaceAll("\"", ""); + // SELECT "ts","val" FROM db.tb + this.rawSql = this.rawSql.replaceAll("\"", ""); - // SELECT 1 FROM db.tb - this.rawSql = this.rawSql.replaceAll("SELECT 1 FROM", "SELECT * FROM"); + // SELECT 1 FROM db.tb + this.rawSql = this.rawSql.replaceAll("SELECT 1 FROM", "SELECT * FROM"); - // SELECT "ts","val" FROM db.tb WHERE ts < 33 or ts is null - this.rawSql = this.rawSql.replaceAll("OR (.*) IS NULL", ""); + // SELECT "ts","val" FROM db.tb WHERE ts < 33 or ts is null + this.rawSql = this.rawSql.replaceAll("OR (.*) IS NULL", ""); - // SELECT "ts","val" FROM db.tb WHERE ts is null or ts < 33 - this.rawSql = this.rawSql.replaceAll("(.*) IS NULL OR", ""); + // SELECT "ts","val" FROM db.tb WHERE ts is null or ts < 33 + this.rawSql = this.rawSql.replaceAll("(.*) IS NULL OR", ""); - // SELECT 1 FROM db.tb WHERE (("val" IS NOT NULL) AND ("val" > 50)) AND (ts >= 66) - this.rawSql = this.rawSql.replaceAll("\\(\\((.*) IS NOT NULL\\) AND", "("); + // SELECT 1 FROM db.tb WHERE (("val" IS NOT NULL) AND ("val" > 50)) AND (ts >= 66) + this.rawSql = this.rawSql.replaceAll("\\(\\((.*) IS NOT NULL\\) AND", "("); - // SELECT 1 FROM db.tb WHERE ("val" IS NOT NULL) AND ("val" > 50) AND (ts >= 66) - this.rawSql = this.rawSql.replaceAll("\\((.*) IS NOT NULL\\) AND", ""); + // SELECT 1 FROM db.tb WHERE ("val" IS NOT NULL) AND ("val" > 50) AND (ts >= 66) + this.rawSql = this.rawSql.replaceAll("\\((.*) IS NOT NULL\\) AND", ""); - // SELECT "ts","val" FROM db.tb WHERE (("val" IS NOT NULL)) AND (ts < 33 or ts is null) - this.rawSql = this.rawSql.replaceAll("\\(\\((.*) IS NOT NULL\\)\\) AND", ""); + // SELECT "ts","val" FROM db.tb WHERE (("val" IS NOT NULL)) AND (ts < 33 or ts is null) + this.rawSql = this.rawSql.replaceAll("\\(\\((.*) IS NOT NULL\\)\\) AND", ""); - /***** For processing inner subqueries *****/ - Pattern pattern = Pattern.compile("FROM\\s+((\\(.+\\))\\s+SUB_QRY)", Pattern.CASE_INSENSITIVE); + /***** For processing inner subqueries *****/ + Pattern pattern = Pattern.compile("FROM\\s+((\\(.+\\))\\s+SUB_QRY)", Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(rawSql); String tableFullName = ""; if (matcher.find() && matcher.groupCount() == 2) { @@ -149,328 +150,329 @@ public class TSDBPreparedStatement extends TSDBStatement implements PreparedStat } /***** for inner queries *****/ - } + } /** * Populate parameters into prepared sql statements + * * @return a string of the native sql statement for TSDB */ - private String getNativeSql() { + private String getNativeSql() { this.sql = this.rawSql; - for (int i = 0; i < parameters.size(); ++i) { - Object para = parameters.get(i); - if (para != null) { - String paraStr = para.toString(); - if (para instanceof Timestamp || para instanceof String) { - paraStr = "'" + paraStr + "'"; + for (int i = 0; i < parameters.size(); ++i) { + Object para = parameters.get(i); + if (para != null) { + String paraStr = para.toString(); + if (para instanceof Timestamp || para instanceof String) { + paraStr = "'" + paraStr + "'"; } this.sql = this.sql.replaceFirst("[?]", paraStr); - } else { - this.sql = this.sql.replaceFirst("[?]", "NULL"); - } - } - parameters.clear(); - return sql; - } - - @Override - public ResultSet executeQuery() throws SQLException { - if (isSaved){ - this.savedPreparedStatement.executeBatchInternal(); - return null; - }else { - return super.executeQuery(getNativeSql()); - } - } - - @Override - public int executeUpdate() throws SQLException { - if (isSaved){ - return this.savedPreparedStatement.executeBatchInternal(); - } else { - return super.executeUpdate(getNativeSql()); - } - } - - @Override - public void setNull(int parameterIndex, int sqlType) throws SQLException { - setObject(parameterIndex, new String("NULL")); - } - - @Override - public void setBoolean(int parameterIndex, boolean x) throws SQLException { - setObject(parameterIndex, x); - } - - @Override - public void setByte(int parameterIndex, byte x) throws SQLException { - setObject(parameterIndex, x); - } - - @Override - public void setShort(int parameterIndex, short x) throws SQLException { - setObject(parameterIndex, x); - } - - @Override - public void setInt(int parameterIndex, int x) throws SQLException { - setObject(parameterIndex, x); - } - - @Override - public void setLong(int parameterIndex, long x) throws SQLException { - setObject(parameterIndex, x); - } - - @Override - public void setFloat(int parameterIndex, float x) throws SQLException { - setObject(parameterIndex, x); - } - - @Override - public void setDouble(int parameterIndex, double x) throws SQLException { - setObject(parameterIndex, x); - } - - @Override - public void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException { - setObject(parameterIndex, x); - } - - @Override - public void setString(int parameterIndex, String x) throws SQLException { - setObject(parameterIndex, x); - } - - @Override - public void setBytes(int parameterIndex, byte[] x) throws SQLException { - setObject(parameterIndex, x); - } - - @Override - public void setDate(int parameterIndex, Date x) throws SQLException { - setObject(parameterIndex, x); - } - - @Override - public void setTime(int parameterIndex, Time x) throws SQLException { - setObject(parameterIndex, x); - } - - @Override - public void setTimestamp(int parameterIndex, Timestamp x) throws SQLException { - setObject(parameterIndex, x); - } - - @Override - public void setAsciiStream(int parameterIndex, InputStream x, int length) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setUnicodeStream(int parameterIndex, InputStream x, int length) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setBinaryStream(int parameterIndex, InputStream x, int length) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void clearParameters() throws SQLException { - parameters.clear(); - } - - @Override - public void setObject(int parameterIndex, Object x, int targetSqlType) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setObject(int parameterIndex, Object x) throws SQLException { - if (isSaved){ - this.savedPreparedStatement.setParam(parameterIndex, x); - }else{ - parameters.add(x); - } - } - - @Override - public boolean execute() throws SQLException { - if (isSaved){ - int result = this.savedPreparedStatement.executeBatchInternal(); - return result > 0; - } else { - return super.execute(getNativeSql()); - } - } - - @Override - public void addBatch() throws SQLException { - if (isSaved){ - this.savedPreparedStatement.addBatch(); - }else { - - if (this.batchedArgs == null) { - batchedArgs = new ArrayList(); - } - super.addBatch(getNativeSql()); - } - } - - @Override - public void setCharacterStream(int parameterIndex, Reader reader, int length) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setRef(int parameterIndex, Ref x) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setBlob(int parameterIndex, Blob x) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setClob(int parameterIndex, Clob x) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setArray(int parameterIndex, Array x) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public ResultSetMetaData getMetaData() throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setDate(int parameterIndex, Date x, Calendar cal) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setTime(int parameterIndex, Time x, Calendar cal) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setTimestamp(int parameterIndex, Timestamp x, Calendar cal) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setNull(int parameterIndex, int sqlType, String typeName) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setURL(int parameterIndex, URL x) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public ParameterMetaData getParameterMetaData() throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setRowId(int parameterIndex, RowId x) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setNString(int parameterIndex, String value) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setNCharacterStream(int parameterIndex, Reader value, long length) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setNClob(int parameterIndex, NClob value) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setClob(int parameterIndex, Reader reader, long length) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setBlob(int parameterIndex, InputStream inputStream, long length) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setNClob(int parameterIndex, Reader reader, long length) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setSQLXML(int parameterIndex, SQLXML xmlObject) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setObject(int parameterIndex, Object x, int targetSqlType, int scaleOrLength) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setAsciiStream(int parameterIndex, InputStream x, long length) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setBinaryStream(int parameterIndex, InputStream x, long length) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setCharacterStream(int parameterIndex, Reader reader, long length) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setAsciiStream(int parameterIndex, InputStream x) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setBinaryStream(int parameterIndex, InputStream x) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setCharacterStream(int parameterIndex, Reader reader) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setNCharacterStream(int parameterIndex, Reader value) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setClob(int parameterIndex, Reader reader) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setBlob(int parameterIndex, InputStream inputStream) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } - - @Override - public void setNClob(int parameterIndex, Reader reader) throws SQLException { - throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); - } + } else { + this.sql = this.sql.replaceFirst("[?]", "NULL"); + } + } + parameters.clear(); + return sql; + } + + @Override + public ResultSet executeQuery() throws SQLException { + if (isSaved) { + this.savedPreparedStatement.executeBatchInternal(); + return null; + } else { + return super.executeQuery(getNativeSql()); + } + } + + @Override + public int executeUpdate() throws SQLException { + if (isSaved) { + return this.savedPreparedStatement.executeBatchInternal(); + } else { + return super.executeUpdate(getNativeSql()); + } + } + + @Override + public void setNull(int parameterIndex, int sqlType) throws SQLException { + setObject(parameterIndex, new String("NULL")); + } + + @Override + public void setBoolean(int parameterIndex, boolean x) throws SQLException { + setObject(parameterIndex, x); + } + + @Override + public void setByte(int parameterIndex, byte x) throws SQLException { + setObject(parameterIndex, x); + } + + @Override + public void setShort(int parameterIndex, short x) throws SQLException { + setObject(parameterIndex, x); + } + + @Override + public void setInt(int parameterIndex, int x) throws SQLException { + setObject(parameterIndex, x); + } + + @Override + public void setLong(int parameterIndex, long x) throws SQLException { + setObject(parameterIndex, x); + } + + @Override + public void setFloat(int parameterIndex, float x) throws SQLException { + setObject(parameterIndex, x); + } + + @Override + public void setDouble(int parameterIndex, double x) throws SQLException { + setObject(parameterIndex, x); + } + + @Override + public void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException { + setObject(parameterIndex, x); + } + + @Override + public void setString(int parameterIndex, String x) throws SQLException { + setObject(parameterIndex, x); + } + + @Override + public void setBytes(int parameterIndex, byte[] x) throws SQLException { + setObject(parameterIndex, x); + } + + @Override + public void setDate(int parameterIndex, Date x) throws SQLException { + setObject(parameterIndex, x); + } + + @Override + public void setTime(int parameterIndex, Time x) throws SQLException { + setObject(parameterIndex, x); + } + + @Override + public void setTimestamp(int parameterIndex, Timestamp x) throws SQLException { + setObject(parameterIndex, x); + } + + @Override + public void setAsciiStream(int parameterIndex, InputStream x, int length) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setUnicodeStream(int parameterIndex, InputStream x, int length) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setBinaryStream(int parameterIndex, InputStream x, int length) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void clearParameters() throws SQLException { + parameters.clear(); + } + + @Override + public void setObject(int parameterIndex, Object x, int targetSqlType) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setObject(int parameterIndex, Object x) throws SQLException { + if (isSaved) { + this.savedPreparedStatement.setParam(parameterIndex, x); + } else { + parameters.add(x); + } + } + + @Override + public boolean execute() throws SQLException { + if (isSaved) { + int result = this.savedPreparedStatement.executeBatchInternal(); + return result > 0; + } else { + return super.execute(getNativeSql()); + } + } + + @Override + public void addBatch() throws SQLException { + if (isSaved) { + this.savedPreparedStatement.addBatch(); + } else { + + if (this.batchedArgs == null) { + batchedArgs = new ArrayList(); + } + super.addBatch(getNativeSql()); + } + } + + @Override + public void setCharacterStream(int parameterIndex, Reader reader, int length) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setRef(int parameterIndex, Ref x) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setBlob(int parameterIndex, Blob x) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setClob(int parameterIndex, Clob x) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setArray(int parameterIndex, Array x) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public ResultSetMetaData getMetaData() throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setDate(int parameterIndex, Date x, Calendar cal) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setTime(int parameterIndex, Time x, Calendar cal) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setTimestamp(int parameterIndex, Timestamp x, Calendar cal) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setNull(int parameterIndex, int sqlType, String typeName) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setURL(int parameterIndex, URL x) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public ParameterMetaData getParameterMetaData() throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setRowId(int parameterIndex, RowId x) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setNString(int parameterIndex, String value) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setNCharacterStream(int parameterIndex, Reader value, long length) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setNClob(int parameterIndex, NClob value) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setClob(int parameterIndex, Reader reader, long length) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setBlob(int parameterIndex, InputStream inputStream, long length) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setNClob(int parameterIndex, Reader reader, long length) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setSQLXML(int parameterIndex, SQLXML xmlObject) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setObject(int parameterIndex, Object x, int targetSqlType, int scaleOrLength) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setAsciiStream(int parameterIndex, InputStream x, long length) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setBinaryStream(int parameterIndex, InputStream x, long length) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setCharacterStream(int parameterIndex, Reader reader, long length) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setAsciiStream(int parameterIndex, InputStream x) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setBinaryStream(int parameterIndex, InputStream x) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setCharacterStream(int parameterIndex, Reader reader) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setNCharacterStream(int parameterIndex, Reader value) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setClob(int parameterIndex, Reader reader) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setBlob(int parameterIndex, InputStream inputStream) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } + + @Override + public void setNClob(int parameterIndex, Reader reader) throws SQLException { + throw new SQLException(TSDBConstants.UNSUPPORT_METHOD_EXCEPTIONZ_MSG); + } } diff --git a/src/connector/jdbc/src/main/java/com/taosdata/jdbc/bean/TSDBPreparedParam.java b/src/connector/jdbc/src/main/java/com/taosdata/jdbc/bean/TSDBPreparedParam.java index 3d58075c717e89b10637ce3ad933d4d7bcb0cf59..ef78292de60d11b535df7403cd27d622686fbba1 100644 --- a/src/connector/jdbc/src/main/java/com/taosdata/jdbc/bean/TSDBPreparedParam.java +++ b/src/connector/jdbc/src/main/java/com/taosdata/jdbc/bean/TSDBPreparedParam.java @@ -42,7 +42,7 @@ public class TSDBPreparedParam { this.middleParamList = middleParamList; } - public void setMiddleParam(int parameterIndex, Object x){ + public void setMiddleParam(int parameterIndex, Object x) { this.middleParamList.set(parameterIndex, x); } @@ -55,7 +55,7 @@ public class TSDBPreparedParam { } - public void setValueParam(int parameterIndex, Object x){ + public void setValueParam(int parameterIndex, Object x) { this.valueList.set(parameterIndex, x); }