hi.
公司内部有一套自研的查询平台,目前是基于表级别进行访问控制,想实现基于列级别进行权限控制。
想实现提取表名和列名的对应关系,如下:
{
"tableName":"Orders",
"columns":[
"OrderID",
"OrderData",
"CustomerID"
]
}
拜读了tidb parser (https://github.com/pingcap/parser),没有找到如何提取SELECT语句的表名和关联的列名的方法(本人菜)
看到过一位大佬提过Issues
https://github.com/pingcap/parser/issues/1349
但是解决办法不太准确(*ast.ColumnName.Table.String())
比如下面的SQL
SELECT x.a, b FROM t1 as x GROUP BY (a, b) HAVING a > c ORDER BY b
通过上面的方法,可以提取到表名x
对应的列名a
,但是b就提取不到,同时x
是t1的别名
跪求解决思路,谢谢!