跳转至

高级功能

任务 1:投影算子下推(1 分)

实验描述

基础功能中完成了选择和连接算子的下推,高级功能中要求在此基础上添加投影算子的下推功能,可通过 set enable_projection_pushdown = true 打开投影下推开关。

实现思路

  • 步骤 1:实现 PushdownProjection 函数,对形如 select a.id, b.id from a, b 的 SQL 进行投影下推。
  • 步骤 2:增加对查询中连接谓词相关列的处理,对形如 select a.score from a, b where a.id = b.id 的 SQL 实现投影下推。

设计测例时需要使用 explain 语句验证投影下推的正确性。

任务 2:基于动态规划算法的连接顺序选择(2 分)

实验描述

基础功能中的连接顺序选择使用的是贪心算法,高级功能中要求在此基础上添加基于动态规划的连接顺序选择算法。

实现思路

在 ReorderJoin 函数中根据 join_order_algorithm_ 的值选择使用的算法类型,并补充动态规划算法相关代码。