refactor sql parser & support tableMapping. issue #1432

This commit is contained in:
wenshao
2016-09-25 05:06:50 +08:00
parent 2e478b1869
commit a26e4c546d
33 changed files with 430 additions and 177 deletions
@@ -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(' ');
@@ -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;
@@ -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) {
@@ -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();
@@ -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(' ');