openGauss 内核分析(七):SQL by pass & 经典执行器 (二)
openGauss 内核分析(七):SQL by pass & 经典执行器 (二)
02 经典的执行器
关闭 enable_opfusion,简单 insert 的执行计划是这样的: ' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
在这种执行流程中 Portal 是执行 SQL 语句的载体,每一条 SQL 对应唯一的 Portal,不同的查询类型对应的 Portal 类型也有区别。
Portal 的生命周期管理在 exec_simple_query 函数中实现,该函数负责 Portal 创建、执行和清理。Portal 执行的主要执行流程包括 PortalStart 函数、PortalRun 函数、PortalDrop 函数几个部分。其中 PortalStart 函数负责进行 Portal 结构体初始化工作,包括执行算子初始化、内存上下文分配等;PortalRun 函数负责真正的执行和运算,它是执行器的核心;PortalDrop 函数负责最后的清理工作,主要是数据结构、缓存的清理。

评论