diff --git a/src/backend/optimizer/util/relnode.c b/src/backend/optimizer/util/relnode.c index 76dad17e33..e4bc25282d 100644 --- a/src/backend/optimizer/util/relnode.c +++ b/src/backend/optimizer/util/relnode.c @@ -406,9 +406,12 @@ find_base_rel(PlannerInfo *root, int relid) { RelOptInfo *rel; - Assert(relid > 0); - - if (relid < root->simple_rel_array_size) + /* + * Cant't accept negative relid values, + * So cast to unsigned to protect lower limits of + * simple_rel_array + */ + if ((uint32) relid < (uint32) root->simple_rel_array_size) { rel = root->simple_rel_array[relid]; if (rel) @@ -432,9 +435,12 @@ find_base_rel(PlannerInfo *root, int relid) RelOptInfo * find_base_rel_ignore_join(PlannerInfo *root, int relid) { - Assert(relid > 0); - - if (relid < root->simple_rel_array_size) + /* + * Cant't accept negative relid values, + * So cast to unsigned to protect lower limits of + * simple_rel_array + */ + if ((uint32) relid < (uint32) root->simple_rel_array_size) { RelOptInfo *rel; RangeTblEntry *rte;