mirror of
https://github.com/postgres/postgres.git
synced 2025-05-09 18:21:05 +03:00
Ensure that slots are zeroed before use
The previous coding relied on the memory for the slots being zeroed elsewhere, which while it was true in this case is not an contract which is guaranteed to hold. Explicitly clear the tts_isnull array to ensure that the slots are filled from a known state. Backpatch to v14 where the catalog multi-inserts were introduced. Reviewed-by: Michael Paquier <michael@paquier.xyz> Discussion: https://postgr.es/m/CAJ7c6TP0AowkUgNL6zcAK-s5HYsVHVBRWfu69FRubPpfwZGM9A@mail.gmail.com Backpatch-through: 14
This commit is contained in:
parent
a6a0ae127e
commit
1ed1f801cd
@ -766,6 +766,9 @@ InsertPgAttributeTuples(Relation pg_attribute_rel,
|
|||||||
|
|
||||||
ExecClearTuple(slot[slotCount]);
|
ExecClearTuple(slot[slotCount]);
|
||||||
|
|
||||||
|
memset(slot[slotCount]->tts_isnull, false,
|
||||||
|
slot[slotCount]->tts_tupleDescriptor->natts * sizeof(bool));
|
||||||
|
|
||||||
if (new_rel_oid != InvalidOid)
|
if (new_rel_oid != InvalidOid)
|
||||||
slot[slotCount]->tts_values[Anum_pg_attribute_attrelid - 1] = ObjectIdGetDatum(new_rel_oid);
|
slot[slotCount]->tts_values[Anum_pg_attribute_attrelid - 1] = ObjectIdGetDatum(new_rel_oid);
|
||||||
else
|
else
|
||||||
|
@ -907,6 +907,9 @@ copyTemplateDependencies(Oid templateDbId, Oid newDbId)
|
|||||||
|
|
||||||
ExecClearTuple(slot[slot_stored_count]);
|
ExecClearTuple(slot[slot_stored_count]);
|
||||||
|
|
||||||
|
memset(slot[slot_stored_count]->tts_isnull, false,
|
||||||
|
slot[slot_stored_count]->tts_tupleDescriptor->natts * sizeof(bool));
|
||||||
|
|
||||||
shdep = (Form_pg_shdepend) GETSTRUCT(tup);
|
shdep = (Form_pg_shdepend) GETSTRUCT(tup);
|
||||||
|
|
||||||
slot[slot_stored_count]->tts_values[Anum_pg_shdepend_dbid - 1] = ObjectIdGetDatum(newDbId);
|
slot[slot_stored_count]->tts_values[Anum_pg_shdepend_dbid - 1] = ObjectIdGetDatum(newDbId);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user