【 TiDB 使用环境】测试
【 TiDB 版本】github.com/pingcap/tidb/pkg/parser v0.0.0-20240520150715-b3d740f7bb92
【复现路径】做过哪些操作出现的问题
参考文档,写了一个SQL解析的函数
func (t *TableStruct) Enter(n ast.Node) (node ast.Node, skipChildren bool) {
if name, ok := n.(*ast.ColumnName); ok {
t.colNames = append(t.colNames, name.Name.String())
} else if tn, ok := n.(*ast.TableName); ok {
t.tableName = tn.Name.String()
} else if cs, ok := n.(*ast.CreateTableStmt); ok {
for _, col := range cs.Cols {
for _, op := range col.Options {
if op.Tp == ast.ColumnOptionPrimaryKey {
t.primaryKey = append(t.primaryKey, col.Name.String())
}
}
}
for _, constr := range cs.Constraints {
if constr.Tp == ast.ConstraintPrimaryKey {
constrKeys := constr.Keys
for _, key := range constrKeys {
t.primaryKey = append(t.primaryKey, key.Column.Name.String())
}
}
}
}
return n, false
}
【遇到的问题:问题现象及影响】
在解析联合主键的创表SQL时,列展示不对
CREATE TABLE users (id INT, email VARCHAR(255), PRIMARY KEY (id, email));
获取到的列列表为[id email id email]
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】