Fix use-after-ReleaseSysCache problem in ATExecAlterColumnType.
authorRobert Haas <rhaas@postgresql.org>
Fri, 19 Mar 2021 21:17:48 +0000 (17:17 -0400)
committerRobert Haas <rhaas@postgresql.org>
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);