]> granicus.if.org Git - postgresql/commitdiff
Fix bogus handling of bad strategy number in GIST consistent() functions.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 14 Apr 2014 15:10:32 +0000 (11:10 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 14 Apr 2014 15:18:47 +0000 (11:18 -0400)
Make sure we throw an error instead of silently doing the wrong thing when
fed a strategy number we don't recognize.  Also, in the places that did
already throw an error, spell the error message in a way more consistent
with our message style guidelines.

Per report from Paul Jones.  Although this is a bug, it won't occur unless
a superuser tries to do something he shouldn't, so it doesn't seem worth
back-patching.

src/backend/access/gist/gistproc.c

index 6e1e20476992f653690ad3e52fcaa34512df8ae7..db0bec6e3e566217d36b57d5a9ab1091f7368c38 100644 (file)
@@ -926,7 +926,9 @@ gist_box_leaf_consistent(BOX *key, BOX *query, StrategyNumber strategy)
                                                                                                        PointerGetDatum(query)));
                        break;
                default:
-                       retval = FALSE;
+                       elog(ERROR, "unrecognized strategy number: %d", strategy);
+                       retval = false;         /* keep compiler quiet */
+                       break;
        }
        return retval;
 }
@@ -1015,7 +1017,9 @@ rtree_internal_consistent(BOX *key, BOX *query, StrategyNumber strategy)
                                                                                                        PointerGetDatum(query)));
                        break;
                default:
-                       retval = FALSE;
+                       elog(ERROR, "unrecognized strategy number: %d", strategy);
+                       retval = false;         /* keep compiler quiet */
+                       break;
        }
        return retval;
 }
@@ -1306,7 +1310,9 @@ gist_point_consistent_internal(StrategyNumber strategy,
                        }
                        break;
                default:
-                       elog(ERROR, "unknown strategy number: %d", strategy);
+                       elog(ERROR, "unrecognized strategy number: %d", strategy);
+                       result = false;         /* keep compiler quiet */
+                       break;
        }
 
        return result;
@@ -1422,8 +1428,9 @@ gist_point_consistent(PG_FUNCTION_ARGS)
                        }
                        break;
                default:
-                       elog(ERROR, "unknown strategy number: %d", strategy);
+                       elog(ERROR, "unrecognized strategy number: %d", strategy);
                        result = false;         /* keep compiler quiet */
+                       break;
        }
 
        PG_RETURN_BOOL(result);
@@ -1445,8 +1452,9 @@ gist_point_distance(PG_FUNCTION_ARGS)
                                                                           PG_GETARG_POINT_P(1));
                        break;
                default:
-                       elog(ERROR, "unknown strategy number: %d", strategy);
+                       elog(ERROR, "unrecognized strategy number: %d", strategy);
                        distance = 0.0;         /* keep compiler quiet */
+                       break;
        }
 
        PG_RETURN_FLOAT8(distance);