​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如何解析查询语句中的表达式列并计算得出该列的值”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注百云行业资讯频道!

相关推荐: Oracle锁的面试题有哪些

本篇内容介绍了“Oracle锁的面试题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!请问Oracle数据库锁的作用是什么?多用户系统并发访问并修改数据时,…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 01/08 11:33
下一篇 01/08 11:33