1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-28 23:42:10 +03:00

Remove parallel-safety check from GetExistingLocalJoinPath.

Commit a104a017fc 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)