]> granicus.if.org Git - postgresql/commitdiff
Minimal fix for crash bug in quals_match_foreign_key.
authorRobert Haas <rhaas@postgresql.org>
Fri, 6 May 2016 19:00:55 +0000 (15:00 -0400)
committerRobert Haas <rhaas@postgresql.org>
Fri, 6 May 2016 19:00:55 +0000 (15:00 -0400)
Discussion is still underway as to whether to revert the entire patch
that added this function, but that discussion may not conclude before
beta1.  So, in the meantime, let's do at least this much.

David Rowley

src/backend/optimizer/path/costsize.c

index fcb18732d85c5ce6df4ee1234b919035532b34b3..4c9d8d9cbd5770c3e9970fde3aff18eb0bf36afd 100644 (file)
@@ -3944,13 +3944,13 @@ quals_match_foreign_key(PlannerInfo *root, ForeignKeyOptInfo *fkinfo,
                        if (i > 0 && bms_is_member(quallstidx, qualmatches))
                                continue;
 
-                       /*
-                        * Here since 'usefulquals' only contains bitmap indexes for quals
-                        * of type "var op var" we can safely skip checking this.
-                        */
                        rinfo = (RestrictInfo *) lfirst(lc);
                        clause = (OpExpr *) rinfo->clause;
 
+                       /* only OpExprs are useful for consideration */
+                       if (!IsA(clause, OpExpr))
+                               continue;
+
                        /*
                         * If the operator does not match then there's little point in
                         * checking the operands.