mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Pre-requisite patch for bug #51263 "Deadlock between
transactional SELECT and ALTER TABLE ... REBUILD PARTITION". The goal of this patch is to decouple type of metadata lock acquired for table by open_tables() from type of table-level lock to be acquired on it. To achieve this we change approach to how we determine what type of metadata lock should be acquired on table to be open. Now instead of inferring it at open_tables() time from flags and type of table-level lock we rely on that type of metadata lock is properly set at parsing time and is not changed further.
This commit is contained in:
@ -1329,9 +1329,9 @@ public:
|
||||
};
|
||||
Open_table_context(THD *thd, ulong timeout);
|
||||
|
||||
bool recover_from_failed_open(THD *thd, MDL_request *mdl_request,
|
||||
TABLE_LIST *table);
|
||||
bool request_backoff_action(enum_open_table_action action_arg);
|
||||
bool recover_from_failed_open(THD *thd);
|
||||
bool request_backoff_action(enum_open_table_action action_arg,
|
||||
MDL_request *mdl_request, TABLE_LIST *table);
|
||||
|
||||
void add_request(MDL_request *request)
|
||||
{ m_mdl_requests.push_front(request); }
|
||||
@ -1362,6 +1362,14 @@ private:
|
||||
MDL_request_list m_mdl_requests;
|
||||
/** Back off action. */
|
||||
enum enum_open_table_action m_action;
|
||||
/** For OT_WAIT_MDL_LOCK action, the request for which we should wait. */
|
||||
MDL_request *m_failed_mdl_request;
|
||||
/**
|
||||
For OT_DISCOVER and OT_REPAIR actions, the table list element for
|
||||
the table which definition should be re-discovered or which
|
||||
should be repaired.
|
||||
*/
|
||||
TABLE_LIST *m_failed_table;
|
||||
MDL_ticket *m_start_of_statement_svp;
|
||||
/**
|
||||
Whether we had any locks when this context was created.
|
||||
|
Reference in New Issue
Block a user