diff options
Diffstat (limited to 'src/backend')
| -rw-r--r-- | src/backend/optimizer/path/costsize.c | 18 | 
1 files changed, 13 insertions, 5 deletions
diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c index 6f16eb81dcd..b27c26154cc 100644 --- a/src/backend/optimizer/path/costsize.c +++ b/src/backend/optimizer/path/costsize.c @@ -2810,12 +2810,20 @@ adjust_semi_join(PlannerInfo *root, JoinPath *path, SpecialJoinInfo *sjinfo,  	 */  	if (indexed_join_quals)  	{ -		List	   *nrclauses; +		if (path->joinrestrictinfo != NIL) +		{ +			List	   *nrclauses; -		nrclauses = select_nonredundant_join_clauses(root, -													 path->joinrestrictinfo, -													 path->innerjoinpath); -		*indexed_join_quals = (nrclauses == NIL); +			nrclauses = select_nonredundant_join_clauses(root, +														 path->joinrestrictinfo, +														 path->innerjoinpath); +			*indexed_join_quals = (nrclauses == NIL); +		} +		else +		{ +			/* a clauseless join does NOT qualify */ +			*indexed_join_quals = false; +		}  	}  	return true;  | 
