Add check for syscache lookup failure in update_relispartition().
Omitted in commit 05b38c7e6 (though it looks like the original blame belongs to 9e9befac4). A failure is admittedly unlikely, but if it did happen, SIGSEGV is not the approved method of reporting it. Per Coverity. Back-patch to v11 where the broken code originated.
This commit is contained in:
parent
506af101f3
commit
030ad0acfa
@ -2682,10 +2682,11 @@ update_relispartition(Oid relationId, bool newval)
|
||||
|
||||
classRel = heap_open(RelationRelationId, RowExclusiveLock);
|
||||
tup = SearchSysCacheCopy1(RELOID, ObjectIdGetDatum(relationId));
|
||||
if (!HeapTupleIsValid(tup))
|
||||
elog(ERROR, "cache lookup failed for relation %u", relationId);
|
||||
Assert(((Form_pg_class) GETSTRUCT(tup))->relispartition != newval);
|
||||
((Form_pg_class) GETSTRUCT(tup))->relispartition = newval;
|
||||
CatalogTupleUpdate(classRel, &tup->t_self, tup);
|
||||
heap_freetuple(tup);
|
||||
|
||||
heap_close(classRel, RowExclusiveLock);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user