diff options
author | Peter Eisentraut <peter@eisentraut.org> | 2020-02-06 21:21:04 +0100 |
---|---|---|
committer | Peter Eisentraut <peter@eisentraut.org> | 2020-02-06 21:25:01 +0100 |
commit | fc7a5e9eaa2fa34b053ffe52e0e57f1fd6b1f939 (patch) | |
tree | 4b066724f92bce87f4480d4215da978e94b83177 /src | |
parent | 7d4395d0a11589aa450a073d658c49b420f4493f (diff) | |
download | postgresql-fc7a5e9eaa2fa34b053ffe52e0e57f1fd6b1f939.tar.gz postgresql-fc7a5e9eaa2fa34b053ffe52e0e57f1fd6b1f939.zip |
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
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/cache/relcache.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index df025a5a302..ff70326474f 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -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; |