package
0.8.1
Repository: https://github.com/wencycool/soar.git
Documentation: pkg.go.dev

# Functions

AlterAffectTable 获取ALTER影响的库表名,返回:`db`.`table`.
Compress compress sql this method is inspired by eversql.com.
FindAllCols 获取AST中某个节点下所有的columns.
FindAllCondition 获取AST中所有的condition条件.
FindColumn 从传入的node中获取所有可能加索引的的column信息.
FindEQColsInJoinCond 获取 join condition 中应转为whereEQ条件的列.
FindEQColsInWhere 获取等值条件信息 将所有值得加索引的condition条件信息进行过滤.
FindGroupByCols 获取groupBy中可能需要加索引的列信息.
FindINEQColsInJoinCond 获取 join condition 中应转为whereINEQ条件的列.
FindINEQColsInWhere 获取非等值条件中可能需要加索引的列 将所有值得加索引的condition条件信息进行过滤 TODO: 将where条件中隐含的join条件合并到join condition中.
FindJoinCols 获取 join condition 中使用到的列(必须是 `列 operator 列` 的情况。 如果列对应的值或是function,则应该移到where condition中) 某些where条件隐含在Join条件中(INNER JOIN).
FindJoinTable 获取 Join 中需要添加索引的表 join 优化添加索引分为三种类型:1.
FindOrderByCols 为索引优化获取orderBy中可能添加索引的列信息.
FindSubquery 拆分subquery,获取最深层的subquery 为索引优化获取subquery中包含的列信息.
FindWhereEQ 找到Where中的等值条件.
FindWhereINEQ 找到Where条件中的非等值条件.
GetMeta 获取元数据信息,构建到db->table层级。 从 SQL 或 Statement 中获取表信息,并返回。当 meta 不为 nil 时,返回值会将新老 meta 合并去重.
GetSubqueryDepth 获取一条SQL的嵌套深度.
GetTableFromExprs 从sqlparser.Exprs中获取所有的库表.
IsMysqlKeyword 判断是否是关键字.
LeftNewLines cal left new lines in space.
ListRewriteRules 打印SQL重写规则.
MergeAlterTables mergealter: 将同一张表的多条ALTER语句合成一条ALTER语句 @input: sql, alter string @output: [[db.]table]sql, 如果找不到DB,key为表名;如果找得到DB,key为db.table.
MysqlEscapeString mysql_real_escape_string https://github.com/liule/golang_escape.
NewLines cal all new lines.
NewNodeList 从抽象语法树中构造一个链表.
NewRewrite 返回一个*Rewrite对象,如果SQL无法被正常解析,将错误输出到日志中,返回一个nil.
Pretty 格式化输出SQL.
PrintPrettyStmtNode 打印TiParse语法树.
RewriteRuleMatch 检查重写规则是否生效.
SplitStatement SQL切分.
TiParse TiDB 语法解析.
Tokenize 序列化token.
Tokenizer 用于初始化token.

# Constants

# Variables

RewriteRules SQL重写规则,注意这个规则是有序的,先后顺序不能乱.
TokenString sqlparser tokens.

# Structs

NodeItem 链表节点.
NodeList 链表结构体.
Rewrite 用于重写SQL.
Rule SQL重写规则.
TiVisitor TODO.
Token 基本定义.