0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PG12/GP7操作符+的实现

微云疏影 来源:yzsDBA 作者:yzsDBA 2022-04-07 15:18 次阅读

介绍PostgreSQL12/GeenPlum7的操作符“+”的实现机制。首先以select id1+id2 from t;为例解释其结构体之间的关系。

1、SeqScanState顺序扫描状态结构

pYYBAGJOkCuAYUQ8AALmT_8aCh8976.jpg

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执行。

进行+符号计算的步骤是最后一步,其代码如下:

poYBAGJOkCuARnBeAAEwe0FA0aQ264.jpg

可以看到,计算前会对参数进行NULL校验,若由一个参数是NULL,则退出。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 结构
    +关注

    关注

    1

    文章

    117

    浏览量

    21572
  • SQL
    SQL
    +关注

    关注

    1

    文章

    760

    浏览量

    44082
收藏 人收藏

    评论

    相关推荐

    逻辑异或运算在Python中的用法

    在Python编程语言中,逻辑异或运算并不直接作为一个内置的操作符存在,因为Python更侧重于高级编程和可读性,并没有直接提供异或运算的简写形式用于逻辑运算(真/假值的异或)。然而
    的头像 发表于 11-19 09:46 99次阅读

    【「数字IC设计入门」阅读体验】+目录和前2章

    4.1.8函数调用30 4.2操作符30 4.2.1算术操作符31 4.2.2关系操作符33 4.2.3相等关系操作符33 4.2.4逻辑操作符
    发表于 10-10 17:12

    兼容7A100T和PG2L100H双芯核心板,米尔FPGA平台

    不同需求 MYIR推出FPGA 开发平台具有极高的灵活性,用户可以根据项目需求自由选择AMD XC7A100T 和紫光同创 PG2L100H 这两款核心板,共享同一底板平台,可以实现无缝切换,在地缘政治
    发表于 09-14 16:08

    鸿蒙原生应用元服务开发-仓颉基础数据类型整数类型

    (十进制)。 整数类型支持的操作 整数类型默认支持的操作符包括:算术操作符、位操作符、关系操作符、自增和自减
    发表于 09-13 14:55

    鸿蒙原生应用元服务开发-仓颉基础数据类型浮点类型

    Float64 浮点类型支持的操作 浮点类型默认支持的操作符包括:算术操作符、关系操作符、赋值操作符、复合赋值
    发表于 09-10 10:22

    鸿蒙原生应用元服务开发-仓颉基础数据类型布尔类型

    let b: Bool = false 布尔类型支持的操作 布尔类型支持的操作符包括:逻辑操作符(逻辑非!,逻辑与 &&,逻辑或 ||)、部分关系操作符
    发表于 09-09 09:57

    c语言中从左到右结合怎么看

    在C语言中,操作符的结合性(Associativity)是指当操作符在表达式中连续出现时,它们如何与操作数结合的顺序。对于大多数二元操作符(即需要两个
    的头像 发表于 08-20 11:42 729次阅读

    c语言从右到左的运算有哪些

    用在变量之后时,它们会先返回变量的原始值,然后再进行递增或递减。 三元条件运算 ( ?: ):这个运算的求值顺序是从右到左。首先计算第三个表达式,然后根据第一个表达式的结果选择第二个或第三个表达式。 赋值运算 ( = ):
    的头像 发表于 08-20 11:39 725次阅读

    FPGA学习笔记---基本语法

    3、信号类型:wire, reg, tri等 4、参数定义:parameter 5、运算操作符:各种逻辑操作符、移位操作符、算数操作符等 6、比较判断:if ... else, ca
    发表于 06-23 14:58

    专业双向收音机GP328操作说明

    电子发烧友网站提供《专业双向收音机GP328操作说明.pdf》资料免费下载
    发表于 05-15 18:21 2次下载

    便携式收音机GP300操作说明

    电子发烧友网站提供《便携式收音机GP300操作说明.pdf》资料免费下载
    发表于 05-15 18:19 0次下载

    arcgis如何选择属性内容类似的部分

    "按钮来打开"Select By Attributes"对话框。该按钮通常位于主工具栏上,并具有一个滤波器图标。 在对话框中,选择要进行查询的字段。这可以是任何具有文本内容的字段,例如区域名称或类型。 在选择字段后,选择一个查询操作符。常见的操作符包括“等于”、“不等于”
    的头像 发表于 02-25 11:12 1707次阅读

    “+”操作符的使用技巧

    这篇写个平时易被忽略的小知识点,一元 + 操作符的使用技巧。
    的头像 发表于 12-28 13:27 509次阅读

    oracle中拼接字符串函数

    , string2) 其中,string1 和 string2 是需要连接的字符串参数。 除了 CONCAT 函数,Oracle 还提供了一些其他的字符串拼接函数和操作符,这些函数和操作符可以根据具体的要求和情况来
    的头像 发表于 12-06 09:49 2823次阅读

    使用pandas进行数据选择和过滤的基本技术和函数

    Python pandas库提供了几种选择和过滤数据的方法,如loc、iloc、[]括号操作符、query、isin、between等等
    的头像 发表于 12-01 10:14 341次阅读
    使用pandas进行数据选择和过滤的基本技术和函数