zoukankan      html  css  js  c++  java
  • PostgreSQL在何处处理 sql查询之十五

    如此:

    接前面,看 add_base_rels_to_query函数:

    /*
     * add_base_rels_to_query
     *
     *      Scan the query's jointree and create baserel RelOptInfos for all
     *      the base relations (ie, table, subquery, and function RTEs)
     *      appearing in the jointree.
     *
     * The initial invocation must pass root->parse->jointree as the value of
     * jtnode.    Internally, the function recurses through the jointree.
     *
     * At the end of this process, there should be one baserel RelOptInfo for
     * every non-join RTE that is used in the query.  Therefore, this routine
     * is the only place that should call build_simple_rel with reloptkind
     * RELOPT_BASEREL.    (Note: build_simple_rel recurses internally to build
     * "other rel" RelOptInfos for the members of any appendrels we find here.)
     */
    void
    add_base_rels_to_query(PlannerInfo *root, Node *jtnode)
    {
        if (jtnode == NULL)
            return;
        if (IsA(jtnode, RangeTblRef))
        {
            int            varno = ((RangeTblRef *) jtnode)->rtindex;
    
            (void) build_simple_rel(root, varno, RELOPT_BASEREL);
        }
        else if (IsA(jtnode, FromExpr))
        {
            FromExpr   *f = (FromExpr *) jtnode;
            ListCell   *l;
    
            foreach(l, f->fromlist)
                add_base_rels_to_query(root, lfirst(l));
        }
        else if (IsA(jtnode, JoinExpr))
        {
            JoinExpr   *j = (JoinExpr *) jtnode;
    
            add_base_rels_to_query(root, j->larg);
            add_base_rels_to_query(root, j->rarg);
        }
        else
            elog(ERROR, "unrecognized node type: %d",
                 (int) nodeTag(jtnode));
    }

    如果表所对应的文件出现问题,会在 build_simple_rel处报错。

  • 相关阅读:
    登陆界面
    信号和槽
    线程同步
    java script简介
    css粘性定位sticky的使用
    vue中使用qrcodejs2生成二维码
    webpack基本使用
    总结一些h5出现的问题及解决方案
    srcset属性配合w宽度描述符配合sizes属性
    vw实现页面布局
  • 原文地址:https://www.cnblogs.com/gaojian/p/3094890.html
Copyright © 2011-2022 走看看