PostgreSQL 源码解读(79)- 查询语句#64(create_plan函数#3-Se…


本节介绍了创建计划create_plan函数中扫描计划的实现过程,主要的逻辑在函数create_scan_plan中实现。Plan
所有计划节点通过将Plan结构作为第一个字段从Plan结构“派生”。这确保了在将节点转换为计划节点时,一切都能正常工作。(在执行器中以通用方式传递时,节点指针经常被转换为Plan *)create_scan_plan函数创建Scan Plan.扫描可以分为顺序扫描(全表扫描)/索引扫描/索引快速扫描/TID扫描等多种扫描方式,这里主要介绍常见的顺序扫描和索引扫描,相应的实现函数是create_seqscan_plan和create_indexscan_plan.测试脚本如下启动gdb,设置断点,进入函数create_scan_planpathtype为T_SeqScan进入相应的分支,约束条件直接使用Relation的限制条件非索引快速扫描,构建目标投影列根据pathtype进入相应的处理逻辑,调用函数create_seqscan_plan构建扫描条件,为NULL生成SeqScan Plan节点,并把启动成本/总成本等相关信息拷贝到该Plan中完成创建,返回Plan下面跟踪分析create_indexscan_plan函数
设置断点,进免费云主机域名入函数赋值并获取相关信息遍历扫描条件重复的约束条件,不需要处理对条件进行排序&规约创建IndexScan节点回到create_scan_plan调用完成.createplan.c
PG Document:Query Planning

相关推荐: PostgreSQL 源码解读(2)- 插入数据#2(RelationPutHeapTuple)

本文简单介绍了PG插入数据部分的源码,主要内容包括RelationPutHeapTuple函数的实现逻辑。RelationPutHeapTuple函数在hio.c文件中,相关的数据结构、宏定义如下:使用上一节的数据表,回收垃圾后,插入一条记录。使用gdb进行跟…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 01/02 09:06
下一篇 01/02 09:07