mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
refactor sql parser & support tableMapping. issue #1432
This commit is contained in:
@@ -467,7 +467,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
print0(ucase ? "IF NOT EXISTS " : "if not exists ");
|
||||
}
|
||||
|
||||
x.getName().accept(this);
|
||||
printTableSourceExpr(x.getName());
|
||||
|
||||
if (x.getLike() != null) {
|
||||
print0(ucase ? " LIKE " : " like ");
|
||||
@@ -2659,7 +2659,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
}
|
||||
|
||||
public boolean visit(SQLExprTableSource x) {
|
||||
x.getExpr().accept(this);
|
||||
printTableSourceExpr(x.getExpr());
|
||||
|
||||
if (x.getAlias() != null) {
|
||||
print(' ');
|
||||
|
||||
+2
@@ -15,6 +15,8 @@
|
||||
*/
|
||||
package com.alibaba.druid.sql.dialect.mysql.visitor;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.SQLObject;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLCharExpr;
|
||||
|
||||
+4
-20
@@ -619,7 +619,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS
|
||||
public boolean visit(OracleSelectTableReference x) {
|
||||
if (x.isOnly()) {
|
||||
print0(ucase ? "ONLY (" : "only (");
|
||||
x.getExpr().accept(this);
|
||||
printTableSourceExpr(x.getExpr());
|
||||
|
||||
if (x.getPartition() != null) {
|
||||
print(' ');
|
||||
@@ -628,7 +628,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS
|
||||
|
||||
print(')');
|
||||
} else {
|
||||
x.getExpr().accept(this);
|
||||
printTableSourceExpr(x.getExpr());
|
||||
|
||||
if (x.getPartition() != null) {
|
||||
print(' ');
|
||||
@@ -1285,27 +1285,11 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS
|
||||
|
||||
x.getTableSource().accept(this);
|
||||
|
||||
if (x.getColumns().size() > 0) {
|
||||
incrementIndent();
|
||||
println();
|
||||
print('(');
|
||||
for (int i = 0, size = x.getColumns().size(); i < size; ++i) {
|
||||
if (i != 0) {
|
||||
if (i % 5 == 0) {
|
||||
println();
|
||||
}
|
||||
print0(", ");
|
||||
}
|
||||
x.getColumns().get(i).accept(this);
|
||||
}
|
||||
print(')');
|
||||
decrementIndent();
|
||||
}
|
||||
printInsertColumns(x.getColumns());
|
||||
|
||||
if (x.getValues() != null) {
|
||||
println();
|
||||
print0(ucase ? "VALUES" : "values");
|
||||
println();
|
||||
print0(ucase ? "VALUES " : "values ");
|
||||
x.getValues().accept(this);
|
||||
} else {
|
||||
if (x.getQuery() != null) {
|
||||
|
||||
+2
-17
@@ -291,7 +291,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor
|
||||
print0(ucase ? "ONLY " : "only ");
|
||||
}
|
||||
|
||||
x.getTableName().accept(this);
|
||||
printTableSourceExpr(x.getTableName());
|
||||
|
||||
if (x.getAlias() != null) {
|
||||
print0(ucase ? " AS " : " as ");
|
||||
@@ -337,22 +337,7 @@ public class PGOutputVisitor extends SQLASTOutputVisitor implements PGASTVisitor
|
||||
|
||||
x.getTableSource().accept(this);
|
||||
|
||||
if (x.getColumns().size() > 0) {
|
||||
incrementIndent();
|
||||
println();
|
||||
print('(');
|
||||
for (int i = 0, size = x.getColumns().size(); i < size; ++i) {
|
||||
if (i != 0) {
|
||||
if (i % 5 == 0) {
|
||||
println();
|
||||
}
|
||||
print0(", ");
|
||||
}
|
||||
x.getColumns().get(i).accept(this);
|
||||
}
|
||||
print(')');
|
||||
decrementIndent();
|
||||
}
|
||||
printInsertColumns(x.getColumns());
|
||||
|
||||
if (x.getValues() != null) {
|
||||
println();
|
||||
|
||||
+3
-20
@@ -151,23 +151,7 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe
|
||||
|
||||
x.getTableSource().accept(this);
|
||||
|
||||
if (x.getColumns().size() > 0) {
|
||||
incrementIndent();
|
||||
println();
|
||||
print('(');
|
||||
for (int i = 0, size = x.getColumns().size(); i < size; ++i) {
|
||||
if (i != 0) {
|
||||
if (i % 5 == 0) {
|
||||
println();
|
||||
}
|
||||
print0(", ");
|
||||
}
|
||||
|
||||
x.getColumns().get(i).accept(this);
|
||||
}
|
||||
print(')');
|
||||
decrementIndent();
|
||||
}
|
||||
printInsertColumns(x.getColumns());
|
||||
|
||||
if (x.getOutput() != null) {
|
||||
println();
|
||||
@@ -177,8 +161,7 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe
|
||||
|
||||
if (x.getValuesList().size() != 0) {
|
||||
println();
|
||||
print0(ucase ? "VALUES" : "values");
|
||||
println();
|
||||
print0(ucase ? "VALUES " : "values ");
|
||||
for (int i = 0, size = x.getValuesList().size(); i < size; ++i) {
|
||||
if (i != 0) {
|
||||
print(',');
|
||||
@@ -256,7 +239,7 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe
|
||||
}
|
||||
|
||||
public boolean visit(SQLExprTableSource x) {
|
||||
x.getExpr().accept(this);
|
||||
printTableSourceExpr(x.getExpr());
|
||||
|
||||
if (x.getAlias() != null) {
|
||||
print(' ');
|
||||
|
||||
Reference in New Issue
Block a user