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
/*
* 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;