diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c
index 067cbca1254d7b58114edf40e7c9ec967ce86f88..16a5d0a3ca277a8ad4d735eb43940bc6f46560f7 100644
--- a/src/backend/optimizer/path/costsize.c
+++ b/src/backend/optimizer/path/costsize.c
@@ -2897,12 +2897,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;