1
4

1 回答 1

2

这有点棘手,因为您正在处理对聚合函数的调用,而这些不是普通的表达式。请注意AggCall,使用的RelBuildera 既不是 aSqlNode也不是 a RexNode

因此,最简单的事情可能是将您的表达式字符串转换为有效的查询字符串。例如“ SUM(x) / SUM(y) as myRatio"”变成“ SELECT SUM(x) / SUM(y) as myRatio FROM (VALUES (0, 0)) AS t(x, y)”。然后解析它并将其转换为RelNode. PlannerTest.testParseAndConvert正是这样做的;它只使用几行代码,因此您可以从该方法复制粘贴。

于 2016-06-27T19:22:27.237 回答