Fix corner-case bug introduced with HOT: if REINDEX TABLE pg_class (or a
Tom Lane <tgl@sss.pgh.pa.us>
Fix corner-case bug introduced with HOT: if REINDEX TABLE pg_class (or a REINDEX DATABASE including same) is done before a session has done any other update on pg_class, the pg_class relcache entry was left with an incorrect setting of rd_indexattr, because the indexed-attributes set would be first demanded at a time when we'd forced a partial list of indexes into the pg_class entry, and it would remain cached after that. This could result in incorrect decisions about HOT-update safety later in the same session. In practice, since only pg_class_relname_nsp_index would be missed out, only ALTER TABLE RENAME and ALTER TABLE SET SCHEMA could trigger a problem. Per report and test case from Ondrej Jirman.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/catalog/index.c | modified | +6 −2 |
| src/backend/utils/cache/relcache.c | modified | +8 −2 |