暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss CteScan算子

openGauss小助手 2021-10-16
943

CteScan算子用于处理With表达式对应的子查询,对应于CteScan计划节点,相应的代码源文件是“nodeCteScan.cpp”。算子对应的主要函数如表7-20所示。

表7-20 CteScan算子主要函数

主要函数说明
ExecInitCteScan初始化CteScan状态节点
ExecCteScan迭代获取元组
ExecEndCteScan清理CteScan状态节点
ExecResScanCteScan重置CteScan状态节点

ExecInitCteScan函数初始化CteScan状态节点。主要执行流程如下。

(1) 获得Cte计划节点。
(2) 根据全局参数prmdata(所有CteScan子计划共享)判断当前CteScan计划是否为起始Cte,如果是则构造cte_table用于缓存。
(3) 初始化目标表达式和条件过滤表达式。
(4) 初始化元组用于缓存。

ExecCteScan函数用于迭代获取元组,通过回调函数调用CteScanNext实现。主要执行流程是:首先判断缓存数组中是否有未取元组,如果有则取出返回(使用tuplestore_gettupleslot函数),否则执行子计划获取元组。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论