Ensure relcache consistency around generated columns

In certain transient states, it's possible that a table has attributes
with attgenerated set but no default expressions in pg_attrdef yet.
In that case, the old code path would not set
relation->rd_att->constr->has_generated_stored, unless
relation->rd_att->constr was also populated for some other reason.
There was probably no practical impact, but it's better to keep this
consistent.

Reported-by: Andres Freund <andres@anarazel.de>
Discussion: https://www.postgresql.org/message-id/flat/20200115181105.ad6ab6dlgyww3lb6%40alap3.anarazel.de
This commit is contained in:
Peter Eisentraut 2020-02-06 21:21:04 +01:00
parent 7d4395d0a1
commit fc7a5e9eaa
1 changed files with 5 additions and 2 deletions

View File

@ -669,8 +669,11 @@ RelationBuildTupleDesc(Relation relation)
/*
* Set up constraint/default info
*/
if (constr->has_not_null || ndef > 0 ||
attrmiss || relation->rd_rel->relchecks)
if (constr->has_not_null ||
constr->has_generated_stored ||
ndef > 0 ||
attrmiss ||
relation->rd_rel->relchecks)
{
relation->rd_att->constr = constr;