pgsql: Fix locking while setting flags in MySerializableXact.
От | Heikki Linnakangas |
---|---|
Тема | pgsql: Fix locking while setting flags in MySerializableXact. |
Дата | |
Msg-id | E1QV8WD-0006y2-Ug@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Fix locking while setting flags in MySerializableXact. Even if a flag is modified only by the backend owning the transaction, it's not safe to modify it without a lock. Another backend might be setting or clearing a different flag in the flags field concurrently, and that operation might be lost because setting or clearing a bit in a word is not atomic. Make did-write flag a simple backend-private boolean variable, because it was only set or tested in the owning backend (except when committing a prepared transaction, but it's not worthwhile to optimize for the case of a read-only prepared transaction). This also eliminates the need to add locking where that flag is set. Also, set the did-write flag when doing DDL operations like DROP TABLE or TRUNCATE -- that was missed earlier. Branch ------ master Details ------- http://git.postgresql.org/pg/commitdiff/cb2d158c5808c72cbd12cbffe0b7f5dbe830760b Modified Files -------------- src/backend/storage/lmgr/predicate.c | 85 ++++++++++++++++++----------- src/include/storage/predicate_internals.h | 15 +++--- 2 files changed, 61 insertions(+), 39 deletions(-)
В списке pgsql-committers по дате отправления: