diff options
author | Andrew Dunstan <andrew@dunslane.net> | 2021-06-18 07:44:58 -0400 |
---|---|---|
committer | Andrew Dunstan <andrew@dunslane.net> | 2021-06-18 07:46:21 -0400 |
commit | 6432bfe8a372a1c1d4ee8edc91be7fe9910bf51d (patch) | |
tree | f2fed26584c44999e2e030746077db8badeac798 /src/backend/commands/tablecmds.c | |
parent | 70293e946e60bb7eb58f74656667458406a1b461 (diff) |
Don't set a fast default for anything but a plain table
The fast default code added in Release 11 omitted to check that the
table a fast default was being added to was a plain table. Thus one
could be added to a foreign table, which predicably blows up. Here we
perform that check.
In addition, on the back branches, since some of these might have
escaped into the wild, if we encounter a missing value for
an attribute of something other than a plain table we ignore it.
Fixes bug #17056
Backpatch to release 11,
Reviewed by: Andres Freund, Álvaro Herrera and Tom Lane
Diffstat (limited to 'src/backend/commands/tablecmds.c')
-rw-r--r-- | src/backend/commands/tablecmds.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 85895bc675b..816ce8521fe 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -11313,9 +11313,10 @@ ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel, /* * Here we go --- change the recorded column type and collation. (Note * heapTup is a copy of the syscache entry, so okay to scribble on.) First - * fix up the missing value if any. + * fix up the missing value if any. There shouldn't be any missing values + * for anything except plain tables, but if there are, ignore them. */ - if (attTup->atthasmissing) + if (rel->rd_rel->relkind == RELKIND_RELATION && attTup->atthasmissing) { Datum missingval; bool missingNull; |