继续分析…
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,先说一下第一个:
:增加了Row的表达式,里面包含了一个表达式数组。
:在mentionedAggregateFuncs()中增加了Row类型,获取所有聚合表达式,需要递归所有存在的表达式。
:把val变量首字母大写了。
:对大小比较方法支持了比较数组(也就是row,必须全部是row才能比较)。
:在解析器内增加row语法。
:在有关表达式的Eval()中增加对row表达式的支持,并在helper.go添加了几个用于检查表达式是否有多个值的方法。
:修改了scanner.l
:增加了测试数据
:修复比较没加括号。
*: 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))
:增加了Column数量的返回。
:在in中增加row的支持。
:增加测试数据。
:修改函数名。
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冲突。