On 2016/09/13 14:17, Ashutosh Bapat wrote:

    But another concern about the approach of generating an
    subselect alias for a path, if needed, at the path creation time
    would be that the path might be rejected by add_path, which would
    result in totally wasting cycles for generating the subselect alias
    for the path.

A path may get rejected but the relation is not rejected. The alias
applies to a relation and its targetlist, which will remain same for all
paths created for that relation, esp when it's a base relation or join.
So, AFAIU that work never gets wasted.

I think there is no guarantee that add_path won't reject foreign join paths. The possibility would be very low, though.

        However minimum overhead it might have, we will deparse the
        query every
        time we create a path involving that kind of relation i.e. for
        different
        pathkeys, different parameterization and different joins in
        which that
        relation participates in. This number can be significant. We want to
        avoid this overhead if we can.

    Exactly.  As I said above, I think the overhead would be negligible
    compared to the overhead in explaining each remote query for costing
    or the overhead in sending the final remote query for execution, though.

It won't remain minimal as the number of paths created increases,
increasing the number of times a query is deparsed. We deparse query
every time time we cost a path for a relation with use_remote_estimates
true. As we try to push down more and more stuff, we will create more
paths and deparse the query more time.

Also, that makes the interface better. Right now, in your patch, you
have changed the order of deparsing in the existing code, so that the
aliases are registered while deparsing FROM clause and before any Var
nodes are deparsed. If we create aliases at the time of path creation,
only once in GetForeignJoinPaths or GetForeignPaths as appropriate, that
would require less code churn and would save some CPU cycles as well.

Agreed.  Will fix.

Best regards,
Etsuro Fujita




--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to