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

    文章

    116

    浏览量

    21471
  • SQL
    SQL
    +关注

    关注

    1

    文章

    738

    浏览量

    43460
收藏 人收藏

    评论

    相关推荐

    “+”操作符的使用技巧

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

    Verilog基础:介绍几个常用的按位操作符

    操作符是对二进制位进行操作的运算符。以下是一些常用的位操作符
    的头像 发表于 11-09 10:59 388次阅读

    Verilog基础:几个常用的按位操作符

    操作符是对二进制位进行操作的运算符。
    的头像 发表于 11-09 10:57 481次阅读

    请问C语言文件中的预处理操作符#和##各有什么作用?

    C语言文件中的预处理操作符#和##各有什么作用?
    发表于 11-06 08:09

    后端设计PG liberty增量式生成实现方案

    pin scope 的 pin对应的PG 信息:这个用于工具判别信号所属的PG网络,从而对UPF flow里的isolation或者LS做合规检查,注意这里的output pin会有一个powerdown_function的描述,这个对于可关断domain的功耗检查有帮助
    的头像 发表于 11-03 15:21 292次阅读
    后端设计<b class='flag-5'>PG</b> liberty增量式生成<b class='flag-5'>实现</b>方案

    如何使用位操作符实现低级别的位掩码

    在本文中,我们来看看如何使用位操作符实现低级别的位掩码。我们将看到我们如何将一个单一的 int 变量作为一个单独的数据容器。 位掩码 位掩码允许我们在一个数字变量中存储多个值。我们不再把这个变量看作
    的头像 发表于 10-07 16:52 232次阅读

    FX-1PG/FX2N-1PG脉冲发生器单元说明书

    前言 • 本手册包含文本、图表和解释,将指导读者正确安装和操作 FX-1PG/FX2N-1PG 脉冲发生器单元。它应该是在尝试安装或使用本机之前,请阅读并理解。 • 更多信息可在FX/FX2N
    发表于 09-14 15:36 6次下载

    【verilog每日一练】移位操作符的使用

    定义变量reg [7:0]a;reg [7:0]b;reg [7:0]c;暂不考虑溢出及小数,用移位操作符(<<、>>)实现
    发表于 08-14 10:36

    Linux命令中“!”操作符的用法

    Linux中的'!'符号或操作符可以用作逻辑否定运算符,也可以用于在历史记录中获取命令并进行修改或运行以前执行过的命令。
    发表于 07-05 10:07 1249次阅读

    PG-FP6 フラッシュマリプログラマ ご使用の前ニ / PG-FP6 Flash Memory Programmer 使用前准备

    PG-FP6 フラッシュマリプログラマ ご使用の前ニ / PG-FP6 Flash Memory Programmer 使用前准备
    发表于 06-30 20:06 0次下载
    <b class='flag-5'>PG</b>-FP6 フラッシュマリプログラマ ご使用の前ニ / <b class='flag-5'>PG</b>-FP6 Flash Memory Programmer 使用前准备

    PG-FPL3 クイック・スタート・ガイド SM+编

    PG-FPL3 クイック・スタート・ガイド SM+编
    发表于 06-27 20:22 0次下载
    <b class='flag-5'>PG</b>-FPL3 クイック・スタート・ガイド SM+编

    M12-D编码板前PG9螺纹航空插座

    M12-D编码板前PG9螺纹航空插座是一种经过精密设计和优化的连接器,它具有很高的可靠性和稳定性。这种插座可以广泛应用于各种航空、航天、电子、机械等领域,为各种设备和系统提供了可靠的连接和通讯保障。
    发表于 06-25 13:02 275次阅读
    M<b class='flag-5'>12</b>-D编码板前<b class='flag-5'>PG</b>9螺纹航空插座

    gp88s中文写频率

    gp88s中文写频率
    发表于 05-29 11:14 8次下载

    PG-FPL3 クイック・スタート・ガイド SM+编

    PG-FPL3 クイック・スタート・ガイド SM+编
    发表于 05-09 19:01 0次下载
    <b class='flag-5'>PG</b>-FPL3 クイック・スタート・ガイド SM+编

    PG-FP4(控制代码:B、C、E、F、G、H)操作注意事项

    PG-FP4(控制代码:B、C、E、F、G、H)操作注意事项
    发表于 04-27 19:12 0次下载
    <b class='flag-5'>PG</b>-FP4(控制代码:B、C、E、F、G、H)<b class='flag-5'>操作</b>注意事项