Remove parallel-safety check from GetExistingLocalJoinPath.

Commit a104a017fc5f67ff5d9c374cd831ac3948a874c2 has this check because
I added it to the submitted patch before commit, but that was entirely
wrongheaded, as explained to me by Ashutosh Bapat, who also wrote this
patch.
This commit is contained in:
Robert Haas 2016-02-05 08:07:38 -05:00
parent 63f39b9148
commit e0e7b8fa22
2 changed files with 8 additions and 10 deletions

View File

@ -349,11 +349,10 @@ GetExistingLocalJoinPath(RelOptInfo *joinrel)
The function returns copy of a local join path, which can be converted The function returns copy of a local join path, which can be converted
into an alternative local join plan, which may be useful when into an alternative local join plan, which may be useful when
implementing a <literal>RecheckForeignScan</> method. The function implementing a <literal>RecheckForeignScan</> method. The function
searches for a parallel-safe, unparameterized path in the searches for an unparameterized path in the <literal>pathlist</> of given
<literal>pathlist</> of given <literal>joinrel</>. If it does not find <literal>joinrel</>. If it does not find such a path, it returns NULL, in
such a path, it returns NULL, in which case a foreign data wrapper may which case a foreign data wrapper may build the local path by itself or
build the local path by itself or may choose not to create access paths may choose not to create access paths for that join.
for that join.
</para> </para>
</sect2> </sect2>

View File

@ -801,9 +801,8 @@ get_foreign_server_oid(const char *servername, bool missing_ok)
* *
* Since the plan created using this path will presumably only be used to * Since the plan created using this path will presumably only be used to
* execute EPQ checks, efficiency of the path is not a concern. But since the * execute EPQ checks, efficiency of the path is not a concern. But since the
* list passed is expected to be from RelOptInfo, it's anyway sorted by total * path list in RelOptInfo is anyway sorted by total cost we are likely to
* cost and hence we are likely to choose the most efficient path, which is * choose the most efficient path, which is all for the best.
* all for the best.
*/ */
extern Path * extern Path *
GetExistingLocalJoinPath(RelOptInfo *joinrel) GetExistingLocalJoinPath(RelOptInfo *joinrel)
@ -817,8 +816,8 @@ GetExistingLocalJoinPath(RelOptInfo *joinrel)
Path *path = (Path *) lfirst(lc); Path *path = (Path *) lfirst(lc);
JoinPath *joinpath = NULL; JoinPath *joinpath = NULL;
/* Skip parameterised or non-parallel-safe paths. */ /* Skip parameterised paths. */
if (path->param_info != NULL || !path->parallel_safe) if (path->param_info != NULL)
continue; continue;
switch (path->pathtype) switch (path->pathtype)