mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
improved sql parser.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user