zebra 解析sql使用的阿里druid連接池內(nèi)部的 ast解析器
SQLParser#parseInternal(SQLStatement stmt) 解析sql 語(yǔ)句的時(shí)候,會(huì)使用自定義 ast 的訪(fǎng)問(wèn)器 AbstractMySQLASTVisitor 去訪(fǎng)問(wèn) SQLStatement 的 SQLExprTableSource
@Override
public boolean visit(SQLExprTableSource x) {
SQLName table = (SQLName) x.getExpr();
String simpleName = table.getSimpleName();
String tableName = simpleName.startsWith("`") ? parseTableName(simpleName) : simpleName;
result.getRouterContext().getTableSet().add(tableName);
return true;
}
從而獲取到邏輯表明, 填充到路由上下文 RouterContext 中供后續(xù)使用