CustomScan节点的targetlist、qual、custom_exprs是依赖于谁
发布日期:2021-06-29 18:53:31
浏览次数:2
分类:技术文章
本文共 1892 字,大约阅读时间需要 6 分钟。
文章目录
CustomScan节点的targetlist、qual、custom_exprs是依赖于谁
- 答案:
- 依赖于custom_scan_tlist
static voidset_customscan_references(PlannerInfo *root, CustomScan *cscan, int rtoffset){ ListCell *lc; /* Adjust scanrelid if it's valid */ if (cscan->scan.scanrelid > 0) cscan->scan.scanrelid += rtoffset; if (cscan->custom_scan_tlist != NIL || cscan->scan.scanrelid == 0) { /* Adjust tlist, qual, custom_exprs to reference custom scan tuple */ indexed_tlist *itlist = build_tlist_index(cscan->custom_scan_tlist); cscan->scan.plan.targetlist = (List *) fix_upper_expr(root, (Node *) cscan->scan.plan.targetlist, itlist, INDEX_VAR, rtoffset); cscan->scan.plan.qual = (List *) fix_upper_expr(root, (Node *) cscan->scan.plan.qual, itlist, INDEX_VAR, rtoffset); cscan->custom_exprs = (List *) fix_upper_expr(root, (Node *) cscan->custom_exprs, itlist, INDEX_VAR, rtoffset); pfree(itlist); /* custom_scan_tlist itself just needs fix_scan_list() adjustments */ cscan->custom_scan_tlist = fix_scan_list(root, cscan->custom_scan_tlist, rtoffset); } else { /* Adjust tlist, qual, custom_exprs in the standard way */ cscan->scan.plan.targetlist = fix_scan_list(root, cscan->scan.plan.targetlist, rtoffset); cscan->scan.plan.qual = fix_scan_list(root, cscan->scan.plan.qual, rtoffset); cscan->custom_exprs = fix_scan_list(root, cscan->custom_exprs, rtoffset); } /* Adjust child plan-nodes recursively, if needed */ foreach(lc, cscan->custom_plans) { lfirst(lc) = set_plan_refs(root, (Plan *) lfirst(lc), rtoffset); } /* Adjust custom_relids if needed */ if (rtoffset > 0) { Bitmapset *tempset = NULL; int x = -1; while ((x = bms_next_member(cscan->custom_relids, x)) >= 0) tempset = bms_add_member(tempset, x + rtoffset); cscan->custom_relids = tempset; }}
转载地址:https://cyj666.blog.csdn.net/article/details/108411919 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月09日 06时31分04秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
艾维利时间管理法
2019-04-30
我的sql自定义分页
2019-04-30
阿里入职培训,针不搓
2019-04-30
我的游标分页
2019-04-30
js比较两个String字符串找出不同,并将不同处高亮显示
2019-04-30
进程以下的那些事儿
2019-04-30
宏内核与微内核
2019-04-30
python异步函数中调用同步函数
2019-04-30
Python异步库里面的队列
2019-04-30
xv6的sleep和wakeup
2019-04-30
分布式系统 MapReduce
2019-04-30
分布式系统:RPC
2019-04-30
分布式系统:GFS
2019-04-30
分布式系统:Primary Backup - 故障容忍的虚拟机
2019-04-30
分布式系统:raft
2019-04-30
分布式系统:Raft(实验作业2A)
2019-04-30
分布式系统:Raft(实验作业2B)
2019-04-30
分布式系统:Raft(实验作业2C)
2019-04-30
一微秒的差别
2019-04-30