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处报错。

  • 相关阅读:
    13.App爬取相关库的安装(Charles,Mitmproxy,Appium)
    26.pymysql、pymongo、redis-py安装
    25.安装配置phantomjs
    2.博客随笔加密!!!
    17.scrapy-splash安装-2
    17.docker及scrapy-splash安装-1
    16.Mongodb安装
    scrapy--BeautifulSoup
    scrapy--selenium
    python--随笔一
  • 原文地址:https://www.cnblogs.com/gaojian/p/3094890.html
Copyright © 2011-2022 走看看