diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLExprTableSource.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLExprTableSource.java index 4021273a81..fadba0061d 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLExprTableSource.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLExprTableSource.java @@ -29,7 +29,7 @@ public class SQLExprTableSource extends SQLTableSourceImpl { } public SQLExprTableSource(SQLExpr expr){ - this.expr = expr; + this.setExpr(expr); } public SQLExpr getExpr() { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java index 4253700c3b..28af2c4e5d 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java @@ -874,7 +874,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV print("INTO "); - x.getTableName().accept(this); + x.getTableSource().accept(this); if (x.getColumns().size() > 0) { incrementIndent(); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlParameterizedOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlParameterizedOutputVisitor.java index 1b2bbafcde..d74c9045d5 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlParameterizedOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlParameterizedOutputVisitor.java @@ -152,7 +152,7 @@ public class MySqlParameterizedOutputVisitor extends MySqlOutputVisitor { print("INTO "); - x.getTableName().accept(this); + x.getTableSource().accept(this); if (x.getColumns().size() > 0) { print(" ("); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java index e004e07df2..6d6bf7f68c 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/visitor/OracleOutputVisitor.java @@ -1627,7 +1627,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS public boolean visit(InsertIntoClause x) { print("INTO "); - x.getTableName().accept(this); + x.getTableSource().accept(this); if (x.getColumns().size() > 0) { incrementIndent(); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java index 254d97833d..4dc3121670 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/visitor/PGOutputVisitor.java @@ -329,7 +329,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor print("INSERT INTO "); - x.getTableName().accept(this); + x.getTableSource().accept(this); if (x.getColumns().size() > 0) { incrementIndent(); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/visitor/SQLServerOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/visitor/SQLServerOutputVisitor.java index 951e47afdc..99440a142d 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/visitor/SQLServerOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/visitor/SQLServerOutputVisitor.java @@ -124,7 +124,7 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe public boolean visit(SQLServerInsertStatement x) { print("INSERT INTO "); - x.getTableName().accept(this); + x.getTableSource().accept(this); if (x.getColumns().size() > 0) { incrementIndent(); diff --git a/src/main/java/com/alibaba/druid/sql/visitor/ParameterizedOutputVisitorUtils.java b/src/main/java/com/alibaba/druid/sql/visitor/ParameterizedOutputVisitorUtils.java index cae49c8f4f..4fcf9a609b 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/ParameterizedOutputVisitorUtils.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/ParameterizedOutputVisitorUtils.java @@ -39,11 +39,11 @@ public class ParameterizedOutputVisitorUtils { public static String parameterize(String sql, String dbType) { SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, dbType); List statementList = parser.parseStatementList(); - SQLStatement statemen = statementList.get(0); + SQLStatement stmt = statementList.get(0); StringBuilder out = new StringBuilder(); SQLASTOutputVisitor visitor = createParameterizedOutputVisitor(out, dbType); - statemen.accept(visitor); + stmt.accept(visitor); return out.toString(); } diff --git a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java index 5f770d3aba..bf1cd63ba2 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java @@ -842,7 +842,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter { public boolean visit(SQLInsertStatement x) { print("INSERT INTO "); - x.getTableName().accept(this); + x.getTableSource().accept(this); if (x.getColumns().size() > 0) { incrementIndent(); diff --git a/src/main/java/com/alibaba/druid/support/logging/LogFactory.java b/src/main/java/com/alibaba/druid/support/logging/LogFactory.java index 18b536144b..f218111e23 100644 --- a/src/main/java/com/alibaba/druid/support/logging/LogFactory.java +++ b/src/main/java/com/alibaba/druid/support/logging/LogFactory.java @@ -26,7 +26,7 @@ public class LogFactory { // TODO add slf4j logging // 优先选择log4j,而非Apache Common Logging. 因为后者无法设置真实Log调用者的信息 - tryImplementation("org.slf4j.Logger", "com.alibaba.druid.support.logging.SLF4JImpl"); + tryImplementation("org.slf4j.Logger", "com.alibaba.druid.support.logging.SLF4JImpl"); tryImplementation("org.apache.log4j.Logger", "com.alibaba.druid.support.logging.Log4jImpl"); tryImplementation("java.util.logging.Logger", "com.alibaba.druid.support.logging.Jdk14LoggingImpl"); tryImplementation("org.apache.commons.logging.LogFactory", @@ -57,6 +57,12 @@ public class LogFactory { if (!Log.class.isAssignableFrom(declareClass)) { logConstructor = null; } + + try { + logConstructor.newInstance(LogFactory.class); + } catch (Throwable t) { + logConstructor = null; + } } catch (Throwable t) { // skip } diff --git a/src/main/java/com/alibaba/druid/support/logging/SLF4JImpl.java b/src/main/java/com/alibaba/druid/support/logging/SLF4JImpl.java index bfab5af28b..81fc923eaa 100644 --- a/src/main/java/com/alibaba/druid/support/logging/SLF4JImpl.java +++ b/src/main/java/com/alibaba/druid/support/logging/SLF4JImpl.java @@ -1,3 +1,18 @@ +/* + * Copyright 1999-2011 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.alibaba.druid.support.logging; import org.slf4j.Logger; diff --git a/src/test/java/com/alibaba/druid/sql/parser/SQLMergeTest.java b/src/test/java/com/alibaba/druid/sql/parser/SQLMergeTest.java index ecebba07d3..1949bb1093 100644 --- a/src/test/java/com/alibaba/druid/sql/parser/SQLMergeTest.java +++ b/src/test/java/com/alibaba/druid/sql/parser/SQLMergeTest.java @@ -128,7 +128,7 @@ public class SQLMergeTest extends TestCase { print("INTO "); - x.getTableName().accept(this); + x.getTableSource().accept(this); if (x.getColumns().size() > 0) { print(" ("); diff --git a/src/test/resources/bvt/parser/mysql-7.txt b/src/test/resources/bvt/parser/mysql-7.txt index 6654464b96..80b6e41e03 100644 --- a/src/test/resources/bvt/parser/mysql-7.txt +++ b/src/test/resources/bvt/parser/mysql-7.txt @@ -9,7 +9,7 @@ insert into accontexchangeinfo a --------------------------- -INSERT INTO accontexchangeinfo (a.id, a.sourceid, a.batchno, a.applicant, a.out_uid +INSERT INTO accontexchangeinfo a (a.id, a.sourceid, a.batchno, a.applicant, a.out_uid , a.in_uid, a.moneytype, a.amount, a.remark, a.gmt_create , a.gmt_modified) VALUES (SEQ_ACCONTEXCHANGEINFO.nextval, ?, ?, ?, ?