aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Eisentraut <peter@eisentraut.org>2020-02-06 21:21:04 +0100
committerPeter Eisentraut <peter@eisentraut.org>2020-02-06 21:25:01 +0100
commitfc7a5e9eaa2fa34b053ffe52e0e57f1fd6b1f939 (patch)
tree4b066724f92bce87f4480d4215da978e94b83177 /src
parent7d4395d0a11589aa450a073d658c49b420f4493f (diff)
downloadpostgresql-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.c7
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;