美文网首页
RelRoot说明

RelRoot说明

作者: dotaer | 来源:发表于2018-02-11 11:43 被阅读0次

    RelNode树的根节点

    RelRoot存在的一个重要的原因是处理类似这样的查询:

    select name from emp order by empno desc

    Calcite知道结果必须被排序,但不能代表它按照排序规则进行排序,因为结果中没有empno这个字段。但是我们可以这样表示:

    RelRoot:{

        rel:Sort($1,DESC)

                    Project(name,empno)

                            TableScan(EMP)

        fields: [0]

        collation: [1 DESC]

    }

    注意在结果中存在empno这个字段,但是字段面(fields)告诉使用者把它扔掉了

    另外一个用例是类似这样的查询:

    select name as n,name as n2,empno as n from emp

    name字段有多个使用,并且有多个列用n作为别名,你可以这样来表示:

    RelRoot:{

            rel:Project(name,empno)

                    TableScan(EMP)

            fields:[(0,"n"),(0,"n2"),(1,"n")]

            collation: []

    }

    相关文章

      网友评论

          本文标题:RelRoot说明

          本文链接:https://www.haomeiwen.com/subject/ylyktftx.html