Commit e0e7b8fa authored by Robert Haas's avatar Robert Haas

Remove parallel-safety check from GetExistingLocalJoinPath.

Commit a104a017 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.
parent 63f39b91
...@@ -349,11 +349,10 @@ GetExistingLocalJoinPath(RelOptInfo *joinrel) ...@@ -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>
......
...@@ -801,9 +801,8 @@ get_foreign_server_oid(const char *servername, bool missing_ok) ...@@ -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) ...@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment