使用parse解析sql时,出现了行记录错误的情况

【 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) 截图此页面
【附件:截图/日志/监控】

不熟秋GO语言。
返回结果可以剔重处理一下。

ColumnName是不是有嵌套