TIDB源码分析-分析每一次PR(11)

继续分析…

parser: Add more keywords into UnReservedKeyword list#80

给解析器增加了一些mysql保留关键字。

dev row constructor #90

支持类似select row(1, 1) > row(1,1)的语法。

https://dev.mysql.com/doc/refman/5.7/en/row-subqueries.html

这个PR包含了9个commit,先说一下第一个:

expression: add Row expression:增加了Row的表达式,里面包含了一个表达式数组。

expression: add Row types in helper function:在mentionedAggregateFuncs()中增加了Row类型,获取所有聚合表达式,需要递归所有存在的表达式。

expression: update variable name:把val变量首字母大写了。

util: support row compare:对大小比较方法支持了比较数组(也就是row,必须全部是row才能比较)。

parser: support row constructor:在解析器内增加row语法。

expression: only comparison operation support row constructor:在有关表达式的Eval()中增加对row表达式的支持,并在helper.go添加了几个用于检查表达式是否有多个值的方法。

Address comment:修改了scanner.l

Address comment:增加了测试数据

Address comment:修复比较没加括号。

*: unify all integer types to int64 and uint64 #89

简化与类型相关的代码。

select check one column #93

前面添加的row构造表达式不允许在select fields, group by, order by,  having中使用。在这里地方添加检查。

txn: Using %q to format key and value #94

使用%q格式化key的日志打印,因为可能包含二进制数据。

tidb: Split datasource name to uri and dbName #96

更换了切分dataSource的方式。

column: Trace more errors #97

使用errors.Trace(err)替换各种错误返回。

Add decimal type codec support. #92

对decimal类型增加了Key的编码解码(保证了编码前后比较大小关系不变)。

parser/parser.y: Remove FieldOpts superfluous production. (S/R conflicts 24->18) #98

parser/parser.y: Remove ConstraintOpts superfluous production. S/R conflicts 18->11. #99

删除了多余解析器内容。

interpreter: Change default dbPath #101

由于#96的修改,所以默认dbPath也需要修改(从这里开始在make parser后就可以在window正常运行了)。

support row constructor in IN expression #103

对in表达式支持row(),例如:select row(1, 1) in (row(1,1), row(1,0))

expressions: check with columnNumber:增加了Column数量的返回。

expressions: support row in IN expression:在in中增加row的支持。

tidb: add row test:增加测试数据。

Address comment:修改函数名。

util/types, column, expressions: use types.Convert to replace Col.Cas… #100

使用pingcap/coocood/convert替换原有的类型转换。

parser/parser.y: S/R conflicts 11->10. #102

解决了一个parser的S/R冲突。

发表评论

邮箱地址不会被公开。 必填项已用*标注

请输入正确的验证码