select
sum(l_extendedprice * l_discount) as revenue
from
lineitem
where
l_shipdate >= date '1997-01-01'
and l_shipdate < date '1997-01-01' + interval '1' year
and l_discount between 0.06 - 0.01 and 0.06 + 0.01
and l_quantity < 25
LIMIT 1;
这条SQL比较简单,只是在lineitme上施加了若干简单过滤条件,然后再求一个sum,最后做一个limit。对于这个SQL, ppg_fdw的planner生成的查询计划如下:
(limit)
|
(sum)
|
(foreign_scan)
这个图可能过于简单,但是直接明了的说明了全局的执行plan。在DQP上,会从上到下使用经典的迭代器的模型来执行,plan的叶子节点是foreign_scan节点(foreign_scan实际上就是调用了我们上一篇里面提到、和scan相关的接口)。这个节点负责将OP上执行的局部计划以SQL的形式发送给后台的若干台OP,下推的SQL实际是:
select
sum(l_extendedprice * l_discount)
from
lineitem
where
l_shipdate >= date '1997-01-01'
and l_ship