diff options
-rw-r--r-- | sql/mdl.cc | 12 | ||||
-rw-r--r-- | sql/mdl.h | 1 |
2 files changed, 12 insertions, 1 deletions
diff --git a/sql/mdl.cc b/sql/mdl.cc index ba938f8714b..b3702997168 100644 --- a/sql/mdl.cc +++ b/sql/mdl.cc @@ -119,8 +119,18 @@ public: victim(NULL), current_search_depth(0) { } + /** + The context which has initiated the search. There + can be multiple searches happening in parallel at the same time. + */ MDL_context *start; + /** If a deadlock is found, the context that identifies the victim. */ MDL_context *victim; + /** Set to the MAX_SEARCH_DEPTH at start. Decreased whenever + we descend into another MDL context (aka traverse to the next + wait-for graph node). When 0 is reached, we assume that + a deadlock is found, even if we have not found a loop. + */ uint current_search_depth; /** Maximum depth for deadlock searches. After this depth is @@ -408,7 +418,7 @@ mdl_locks_key(const uchar *record, size_t *length, statement, the design capitalizes on that to later save on look ups in the table definition cache. This leads to reduced contention overall and on LOCK_open in particular. - Please see the description of MDL_context::acquire_shared_lock() + Please see the description of MDL_context::acquire_lock_impl() for details. */ diff --git a/sql/mdl.h b/sql/mdl.h index 2e296b73057..1a123d5baa9 100644 --- a/sql/mdl.h +++ b/sql/mdl.h @@ -322,6 +322,7 @@ public: DBUG_ASSERT(ticket == NULL); type= type_arg; } + /* A helper used to determine which lock request should be aborted. */ uint get_deadlock_weight() const; static MDL_request *create(MDL_key::enum_mdl_namespace mdl_namespace, |