Fix use-after-ReleaseSysCache problem in ATExecAlterColumnType.
authorRobert Haas <[email protected]>
Fri, 19 Mar 2021 21:17:48 +0000 (17:17 -0400)
committerRobert Haas <[email protected]>
Fri, 19 Mar 2021 21:17:48 +0000 (17:17 -0400)
Introduced by commit bbe0a81db69bd10bd166907c3701492a29aca294.

Per buildfarm member prion.

src/backend/commands/tablecmds.c

index ab89935ba73b73d0ca2985f2898386fe9085809a..9b2800bf5e2f1cbf55c1b085961640ff2a96fc09 100644 (file)
@@ -11953,8 +11953,6 @@ ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel,
    attTup->attalign = tform->typalign;
    attTup->attstorage = tform->typstorage;
 
-   ReleaseSysCache(typeTuple);
-
    /* Setup attribute compression */
    if (rel->rd_rel->relkind == RELKIND_RELATION ||
        rel->rd_rel->relkind == RELKIND_PARTITIONED_TABLE)
@@ -11972,6 +11970,8 @@ ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel,
    else
        attTup->attcompression = InvalidCompressionMethod;
 
+   ReleaseSysCache(typeTuple);
+
    CatalogTupleUpdate(attrelation, &heapTup->t_self, heapTup);
 
    table_close(attrelation, RowExclusiveLock);