diff --git a/src/backend/optimizer/util/relnode.c b/src/backend/optimizer/util/relnode.c index 76dad17e33..f2f4a33dc8 100644 --- a/src/backend/optimizer/util/relnode.c +++ b/src/backend/optimizer/util/relnode.c @@ -402,14 +402,12 @@ build_simple_rel(PlannerInfo *root, int relid, RelOptInfo *parent) * Find a base or otherrel relation entry, which must already exist. */ RelOptInfo * -find_base_rel(PlannerInfo *root, int relid) +find_base_rel(const PlannerInfo *root, int relid) { - RelOptInfo *rel; - - Assert(relid > 0); - - if (relid < root->simple_rel_array_size) + if ((uint32) relid < (uint32) root->simple_rel_array_size) { + RelOptInfo *rel; + rel = root->simple_rel_array[relid]; if (rel) return rel; @@ -430,11 +428,9 @@ find_base_rel(PlannerInfo *root, int relid) * outer joins. */ RelOptInfo * -find_base_rel_ignore_join(PlannerInfo *root, int relid) +find_base_rel_ignore_join(const PlannerInfo *root, int relid) { - Assert(relid > 0); - - if (relid < root->simple_rel_array_size) + if ((uint32) relid < (uint32) root->simple_rel_array_size) { RelOptInfo *rel; RangeTblEntry *rte; diff --git a/src/include/optimizer/pathnode.h b/src/include/optimizer/pathnode.h index 6e557bebc4..5295175fa3 100644 --- a/src/include/optimizer/pathnode.h +++ b/src/include/optimizer/pathnode.h @@ -306,8 +306,8 @@ extern void setup_simple_rel_arrays(PlannerInfo *root); extern void expand_planner_arrays(PlannerInfo *root, int add_size); extern RelOptInfo *build_simple_rel(PlannerInfo *root, int relid, RelOptInfo *parent); -extern RelOptInfo *find_base_rel(PlannerInfo *root, int relid); -extern RelOptInfo *find_base_rel_ignore_join(PlannerInfo *root, int relid); +extern RelOptInfo *find_base_rel(const PlannerInfo *root, int relid); +extern RelOptInfo *find_base_rel_ignore_join(const PlannerInfo *root, int relid); extern RelOptInfo *find_join_rel(PlannerInfo *root, Relids relids); extern RelOptInfo *build_join_rel(PlannerInfo *root, Relids joinrelids,