分享更有价值
被信任是一种快乐

​PostgreSQL如何解析查询语句中的表达式列并计算得出该列的值

文章页正文上

这篇文章主要介绍PostgreSQL如何解析查询语句中的表达式列并计算得出该列的值,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!表达式列是指除关系定义中的系统列/定义列之外的其他投影列.比如:该SQL语句中的”1+id”投影列视为表达式列.EEO_XXX宏定义
opcode分发器宏定义ExprState
解析表达式中运行免费主机域名期状态节点ExprEvalStep
表达式解析步骤结构体ExprEvalOp
ExprEvalSteps的鉴频器,定义哪个操作将被执行并且联合体ExprEvalStep->d中的哪个struct将被使用.ExecInterpExpr函数是实现表达式列解析的主函数,解析给定”econtext”在执行上下文中通过”state”标识的表达式.
其主要实现逻辑是根据ExprState->opcode(ExprState的初始化后续再行介绍)指定的操作指定,调整到相应的实现逻辑中,执行完毕调到下一个步骤直至到达EEOP_DONE,即完成所有步骤.测试脚本调用栈跟踪分析
进入ExecInterpExpr获取步骤数组和相关的slot进行分发首先是EEOP_SCAN_FETCHSOME(STEP 1),获取结果slot跳转到下一个步骤EEOP_SCAN_VAR(STEP 2),获取扫描获得的id列值跳转到下一个步骤EEOP_FUNCEXPR_STRICT(STEP 3)
首先获取函数调用信息(参数),然后根据参数个数循环判断,接着调用实际的函数(fn_addr指向免费主机域名的函数),调用后赋值给联合体d.跳转到下一个步骤EEOP_ASSIGN_TMP(STEP 4),获取结果列所在的编号,赋值跳转到下一个步骤,EEO_DONE(STEP 5)退出,返回结果值以上是“PostgreSQL如何解析查询语句中的表达式列并计算得出该列的值”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注云技术行业资讯频道!

相关推荐: ASM磁盘组的创建及扩容方法是什么

这篇文章主要介绍“ASM磁盘组的创建及扩容方法是什么”,在日常操作中,相信很多人在ASM磁盘组的创建及扩容方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ASM磁盘组的创建及扩容方法是什么”的疑惑有所帮助!接下来,请跟着…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册