diff options
author | unknown <konstantin@mysql.com> | 2006-01-04 17:35:30 +0300 |
---|---|---|
committer | unknown <konstantin@mysql.com> | 2006-01-04 17:35:30 +0300 |
commit | f577d864cdac14d9a5cf7714b3506bab7688b1c7 (patch) | |
tree | 12c607d43ac445a9f67b581d304e538eea483b50 /sql/sql_handler.cc | |
parent | d105ee3cc6451b6cbafc77fcdccc0b13810150fc (diff) | |
download | mariadb-git-f577d864cdac14d9a5cf7714b3506bab7688b1c7.tar.gz |
A fix for Bug#7209 "Client error with "Access Denied" on updates
when high concurrency": remove HASH::current_record and make it
an external search parameter, so that it can not be the cause of a
race condition under high concurrent load.
The bug was in a race condition in table_hash_search,
when column_priv_hash.current_record was overwritten simultaneously
by multiple threads, causing the search for a suitable grant record
to fail.
No test case as the bug is repeatable only under concurrent load.
include/hash.h:
- remove current_record from HASH, instead modify hash_first,
hash_next to accept HASH_SEARCH_STATE as an IN/OUT parameter
mysys/hash.c:
- remove HASH::current_record
- change declarations of functions that use HASH in read-only mode
to accept const HASH * instead of HASH *.
- implement hash_search; move the old implementation of hash_search
to hash_first
mysys/testhash.c:
- adjust the test case to changed function declarations
sql/lock.cc:
- adjust to changed declarations of hash_search, hash_next
sql/sql_acl.cc:
- adjust to changed declarations of hash_search, hash_next
sql/sql_base.cc:
- adjust to changed declarations of hash_search, hash_nex
sql/sql_cache.cc:
- adjust to a changed declaration of hash_replace
Diffstat (limited to 'sql/sql_handler.cc')
0 files changed, 0 insertions, 0 deletions