Fix RelationIdGetRelation calls that weren't bothering with error checks.
Some of these are quite old, but that doesn't make them not bugs. We'd rather report a failure via elog than SIGSEGV. While at it, uniformly spell the error check as !RelationIsValid(rel) rather than a bare rel == NULL test. The machine code is the same but it seems better to be consistent. Coverity complained about this today, not sure why, because the mistake is in fact old.
This commit is contained in:
parent
e6af7b367c
commit
2403e54fff
@ -1553,7 +1553,7 @@ ReorderBufferCommit(ReorderBuffer *rb, TransactionId xid,
|
|||||||
|
|
||||||
relation = RelationIdGetRelation(reloid);
|
relation = RelationIdGetRelation(reloid);
|
||||||
|
|
||||||
if (relation == NULL)
|
if (!RelationIsValid(relation))
|
||||||
elog(ERROR, "could not open relation with OID %u (for filenode \"%s\")",
|
elog(ERROR, "could not open relation with OID %u (for filenode \"%s\")",
|
||||||
reloid,
|
reloid,
|
||||||
relpathperm(change->data.tp.relnode,
|
relpathperm(change->data.tp.relnode,
|
||||||
@ -1671,7 +1671,7 @@ ReorderBufferCommit(ReorderBuffer *rb, TransactionId xid,
|
|||||||
|
|
||||||
relation = RelationIdGetRelation(relid);
|
relation = RelationIdGetRelation(relid);
|
||||||
|
|
||||||
if (relation == NULL)
|
if (!RelationIsValid(relation))
|
||||||
elog(ERROR, "could not open relation with OID %u", relid);
|
elog(ERROR, "could not open relation with OID %u", relid);
|
||||||
|
|
||||||
if (!RelationIsLogicallyLogged(relation))
|
if (!RelationIsLogicallyLogged(relation))
|
||||||
@ -3031,6 +3031,10 @@ ReorderBufferToastReplace(ReorderBuffer *rb, ReorderBufferTXN *txn,
|
|||||||
desc = RelationGetDescr(relation);
|
desc = RelationGetDescr(relation);
|
||||||
|
|
||||||
toast_rel = RelationIdGetRelation(relation->rd_rel->reltoastrelid);
|
toast_rel = RelationIdGetRelation(relation->rd_rel->reltoastrelid);
|
||||||
|
if (!RelationIsValid(toast_rel))
|
||||||
|
elog(ERROR, "could not open relation with OID %u",
|
||||||
|
relation->rd_rel->reltoastrelid);
|
||||||
|
|
||||||
toast_desc = RelationGetDescr(toast_rel);
|
toast_desc = RelationGetDescr(toast_rel);
|
||||||
|
|
||||||
/* should we allocate from stack instead? */
|
/* should we allocate from stack instead? */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user