mirror of
https://github.com/postgres/postgres.git
synced 2025-06-13 07:41:39 +03:00
Need to do CommandCounterIncrement after StoreAttrMissingVal.
Without this, an additional change to the same pg_attribute row
within the same command will fail. This is possible at least with
ALTER TABLE ADD COLUMN on a multiple-inheritance-pathway structure.
(Another potential hazard is that immediately-following operations
might not see the missingval.)
Introduced by 95f650674
, which split the former coding that
used a single pg_attribute update to change both atthasdef and
atthasmissing/attmissingval into two updates, but missed that
this should entail two CommandCounterIncrements as well. Like
that fix, back-patch through v13.
Reported-by: Alexander Lakhin <exclusion@gmail.com>
Author: Tender Wang <tndrwang@gmail.com>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/025a3ffa-5eff-4a88-97fb-8f583b015965@gmail.com
Backpatch-through: 13
This commit is contained in:
@ -7533,6 +7533,8 @@ ATExecAddColumn(List **wqueue, AlteredTableInfo *tab, Relation rel,
|
||||
if (!missingIsNull)
|
||||
{
|
||||
StoreAttrMissingVal(rel, attribute->attnum, missingval);
|
||||
/* Make the additional catalog change visible */
|
||||
CommandCounterIncrement();
|
||||
has_missing = true;
|
||||
}
|
||||
FreeExecutorState(estate);
|
||||
|
Reference in New Issue
Block a user