黄河云缆_一站式采购平台 电线电缆供应链平台

扫一扫关注

PG12/GP7操作符+的实现

   2022-04-02 OFweek电子工程网ofweek5930
导读

介绍PostgreSQL12/GeenPlum7的操作符“+”的实现机制。首先以select id1+id2 from t;为例解释其结构体之间的关系。1、SeqScanState顺序扫描状态结构Se

介绍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,则退出。

好,介绍到这里,下节解释+符号对于的函数怎么获取。

       原文标题 : PG12/GP7操作符+的实现

 
(文/ofweek)
 
反对 0 举报 0 收藏 0 打赏 0 评论 0
0相关评论
免责声明
• 
本文为ofweek原创作品,作者: ofweek。欢迎转载,转载请注明原文出处:https://scms.yellowrivercloudcable.cn/news/show-1734.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们3101218373@qq.com。
 

(c)2008-2020 HUATAILIANHE.CN SYSTEM All Rights Reserved

豫B2-20160018-2