On Wed, Mar 16, 2016 at 2:02 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Robert Haas <robertmhaas@gmail.com> writes:
>> On Wed, Mar 16, 2016 at 12:57 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>>> Yeah, I was thinking about the same thing. The comment block above
>>> where you're looking would need some adjustment.
>
>> OK, how about this?
>
> Looks pretty close. One point is that if we do end up using a Result
> node, then the parent GatherPath does not get charged for the Result
> node's cpu_per_tuple overhead. I'm not sure that that's worth changing
> though. It's probably better to bet that the subpath is projectable and
> so no cost will ensue, than to bet the other way.
I'm almost sure this way is the better bet. I actually think at
present the GatherPath is always on top of a scan or join, and those
all project. There might be other cases in the future that don't, but
I think it'd be fine to leave off worrying about this until we (a)
find a case where it happens and (b) failing to charge for the Result
causes a problem. The current situation of never projecting in the
workers is far worse.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company