Free pre-modification HeapTuple in ALTER TABLE ... TYPE ...

This was an oversight in commit 3b174b1a3.

Per offline gripe from Alvaro Herrera

Backpatch to release 11.
This commit is contained in:
Andrew Dunstan 2019-01-11 17:12:54 -05:00
parent 05eb923eae
commit 89d52b9a3e
1 changed files with 5 additions and 2 deletions

View File

@ -9747,6 +9747,7 @@ ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel,
Datum valuesAtt[Natts_pg_attribute];
bool nullsAtt[Natts_pg_attribute];
bool replacesAtt[Natts_pg_attribute];
HeapTuple newTup;
MemSet(valuesAtt, 0, sizeof(valuesAtt));
MemSet(nullsAtt, false, sizeof(nullsAtt));
@ -9772,8 +9773,10 @@ ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel,
replacesAtt[Anum_pg_attribute_attmissingval - 1] = true;
nullsAtt[Anum_pg_attribute_attmissingval - 1] = false;
heapTup = heap_modify_tuple(heapTup, RelationGetDescr(attrelation),
valuesAtt, nullsAtt, replacesAtt);
newTup = heap_modify_tuple(heapTup, RelationGetDescr(attrelation),
valuesAtt, nullsAtt, replacesAtt);
heap_freetuple(heapTup);
heapTup = newTup;
attTup = (Form_pg_attribute) GETSTRUCT(heapTup);
}
}