package
0.0.0-20211001231847-69d7c44852f1
Repository: https://github.com/go-ragnaros/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.
NewLines cal all new lines.
NewNodeList 从抽象语法树中构造一个链表.
NewRewrite 返回一个*Rewrite对象,如果SQL无法被正常解析,将错误输出到日志中,返回一个nil.
Pretty 格式化输出SQL.
PrintPrettyStmtNode 打印TiParse语法树.
PrintPrettyVitessStmtNode print vitess AST struct data.
QueryType get query type such as SELECT/INSERT/DELETE/CREATE/ALTER.
RewriteRuleMatch 检查重写规则是否生效.
SchemaMetaInfo get used database, table name from SQL.
SplitStatement SQL切分 return 1.
StmtNode2JSON TiParse AST tree into json format.
TiParse TiDB 语法解析.
Tokenize 序列化 token,区别于 Tokenizer 函数,这个函数是 soar built-in 实现的切词.
Tokenizer 用于初始化 token,区别于 Tokenize 函数,这个函数使用 vitess 的切词方式.
VitessStmtNode2JSON vitess AST tree into json format.
# Constants
GroupByExpression 用于标记 group by.
JoinExpression 用于标记 join.
OrderByExpression 用于标记 order by.
TokenType.
TokenType.
TokenType.
TokenType.
TokenType.
TokenType.
TokenType.
TokenType.
TokenType.
TokenType.
TokenType.
TokenType.
TokenType.
WhereExpression 用于标记 where.
# Type aliases
Expression describe sql expression type.