improved sql parser.

This commit is contained in:
wenshao
2017-10-26 23:21:01 +08:00
parent c01c49bfd8
commit 3445a3a3f2
7 changed files with 96 additions and 161 deletions
@@ -25,6 +25,7 @@ import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr;
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlKey;
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlUnique;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlTableIndex;
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleCreateSynonymStatement;
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
import com.alibaba.druid.util.FnvHash;
import com.alibaba.druid.util.JdbcConstants;
@@ -562,6 +563,18 @@ public class SQLCreateTableStatement extends SQLStatementImpl implements SQLDDLS
}
}
for (SQLStatement stmt : stmtList) {
if (stmt instanceof OracleCreateSynonymStatement) {
OracleCreateSynonymStatement createSynonym = (OracleCreateSynonymStatement) stmt;
SQLName object = createSynonym.getObject();
String refTableName = object.getSimpleName();
SQLCreateTableStatement refTable = tables.get(refTableName);
if (refTable != null) {
edges.add(new ListDG.Edge(stmt, refTable));
}
}
}
ListDG dg = new ListDG(stmtList, edges);
SQLStatement[] tops = new SQLStatement[stmtList.size()];
@@ -21,6 +21,7 @@ import java.util.List;
import com.alibaba.druid.sql.SQLUtils;
import com.alibaba.druid.sql.ast.SQLExpr;
import com.alibaba.druid.sql.ast.SQLName;
import com.alibaba.druid.sql.ast.SQLReplaceable;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr;
@@ -28,7 +29,7 @@ import com.alibaba.druid.sql.repository.SchemaObject;
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
import com.alibaba.druid.util.FnvHash;
public class SQLExprTableSource extends SQLTableSourceImpl {
public class SQLExprTableSource extends SQLTableSourceImpl implements SQLReplaceable {
protected SQLExpr expr;
private List<SQLName> partitions;
@@ -299,4 +300,13 @@ public class SQLExprTableSource extends SQLTableSourceImpl {
return null;
}
@Override
public boolean replace(SQLExpr expr, SQLExpr target) {
if (expr == this.expr) {
this.setExpr(target);
return true;
}
return false;
}
}