1 |
|
可以借鉴的地方
根据传递的map,改变排序。
1 |
|
aggregate.getGroupSet() = {0}.
map = { 0->7,1->0}.
newGroupSet = {7}.
获取agg所有用到的index
获取aggSet、aggCall所用到的index1
2
Set<Integer> interestingFields = RelOptUtil.getAllFields(aggregate)
获取project的input对应的index
1 | RexNode rex = project.getProjects().get(source) |
加入project的是input的7,0两个元素。
agg的是project的1,2.
那么通过上面的代码可以得到用到的是1对应input的7,2对应input的0.
改变aggCall数据源
1 | final Mappings.TargetMapping targetMapping = // 获取对应的mapping,将aggCall转为以input为数据源的aggCall |
old aggCall=COUNT(DISTINCT $1)
map={0->7,1->0}
通过转换,可以得到
aggCall=COUNT(DISTINCT $0)