[zebra源码]逻辑表名的解析过程

zebra 解析sql使用的阿里druid连接池内部的 ast解析器

SQLParser#parseInternal(SQLStatement stmt) 解析sql 语句的时候,会使用自定义 ast 的访问器  AbstractMySQLASTVisitor 去访问 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 中供后续使用

完整目录:数据库中间件zebra源码分析

posted @ 2021-07-16 22:37  mushishi  阅读(128)  评论(0编辑  收藏  举报