> 13 марта 2018 г., в 17:02, Alexander Korotkov <a.korotkov@postgrespro.ru> написал(а): > > BTW to BTW. I think we should check pending list size with GinGetPendingListCleanupSize() here > + > + /* > + * If fast update is enabled, we acquire a predicate lock on the entire > + * relation as fast update postpones the insertion of tuples into index > + * structure due to which we can't detect rw conflicts. > + */ > + if (GinGetUseFastUpdate(ginstate->index)) > + PredicateLockRelation(ginstate->index, snapshot); > > Because we can alter alter index set (fastupdate = off), but there still will be pending list. > > And what happen if somebody concurrently set (fastupdate = on)? > Can we miss conflicts because of that? No, AccessExclusiveLock will prevent this kind of problems with enabling fastupdate.
True. I didn't notice that ALTER INDEX SET locks index in so high mode.