PG12/GP7操作符+的实现
介绍PostgreSQL12/GeenPlum7的操作符“+”的实现机制。首先以select id1+id2 from t;为例解释其结构体之间的关系。
1、SeqScanState顺序扫描状态结构
SeqScanState为顺序扫描的节点状态结构,内有成员StateState ss:扫描状态信息,该结构有PlanState ps,有用的信息在这里。PlanState ps为计划节点状态结构,内有重要的计算节点信息Plan *plan和条件过滤计算步骤ExprState qual、投影信息ProjectionInfo *ps_ProjInfo。
Plan结构中有2个重要成员链表:targetlist投影信息列表和qual过滤条件列表。这里仅关注投影,因为id1+id2在投影中。targetlist实际上是2个TargetEntry,其中resno表示投影结果位于的结果列序号,resname为结果列名。Expr* expr指向Var结构,表示需要的是哪一列,varattno为用户定义表列的列序号。
接着看投影结构,PlanState中的ps_ProjInfo,内有重要成员ExprState pi_state,表示进行投影计算的步骤描述。pi_state有成员ExprEvalStep steps数组,对表达式计算的步骤描述。本例中有4步,分别为EEOP_SCAN_FETCHSOM、EEOP_SCAN_VAR、EEOP_SCAN_VAR、EEOP_FUNCEXPR_STRICT。由函数ExecInterpExpr执行。
进行+符号计算的步骤是最后一步,其代码如下:
可以看到,计算前会对参数进行NULL校验,若由一个参数是NULL,则退出。
好,介绍到这里,下节解释+符号对于的函数怎么获取。
微软雅黑;font-size:14px;">原文标题:PG12/GP7操作符+的实现
-
抗原检测是什么?怎么操作?
2022-03-16 -
7000字告诉您什么是智能驾驶系统ADS与操作设计域ODD?
2022-02-22 -
使用OpenCV在Python中进行图像操作
2022-02-14 -
污水处理厂春节假期安全操作指南!
2022-01-29 -
乌海超高压供电公司铆足干劲,打好新年开局战!
2022-01-10 -
系统操作员变得越来越灵活
2022-01-09 -
互联网大厂纷纷裁员,乐视却靠“涨薪”反向操作?
2021-12-22 -
5G赋能上海“智慧电厂” 数字化转型让火电“老将”释放新能量
2021-11-24 -
继物联网平台之后,下一代的3D物联网操作系统平台
2021-11-24 -
国网山西电力实现配网调度网络化下令
2021-11-18 -
无线感应,用于离网跟踪器太阳能的远程操作
2021-11-02 -
统信软件:破除国外垄断 解锁中国操作系统新时代
2021-10-29 -
光纤接头与激光头的连接操作规范
2021-10-27 -
苗圩:坚持纯电驱动战略取向
2021-10-18 -
REC Silicon因与晶圆操作失败有关的1,700万美元贷款而遭受重创
2021-10-15