diff options
Diffstat (limited to '')
-rw-r--r-- | sql/lock.cc | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/sql/lock.cc b/sql/lock.cc index ef8c2ba3..a9c866a7 100644 --- a/sql/lock.cc +++ b/sql/lock.cc @@ -816,9 +816,8 @@ MYSQL_LOCK *get_lock_data(THD *thd, TABLE **table_ptr, uint count, uint flags) enum thr_lock_type lock_type; THR_LOCK_DATA **locks_start; - if (!((likely(!table->s->tmp_table) || - (table->s->tmp_table == TRANSACTIONAL_TMP_TABLE)) && - (!(flags & GET_LOCK_SKIP_SEQUENCES) || table->s->sequence == 0))) + if ((table->s->tmp_table && table->s->tmp_table != TRANSACTIONAL_TMP_TABLE) + || (flags & GET_LOCK_SKIP_SEQUENCES && table->s->sequence != NULL)) continue; lock_type= table->reginfo.lock_type; DBUG_ASSERT(lock_type != TL_WRITE_DEFAULT && lock_type != TL_READ_DEFAULT); @@ -882,7 +881,7 @@ MYSQL_LOCK *get_lock_data(THD *thd, TABLE **table_ptr, uint count, uint flags) or this connection was killed. */ -bool lock_schema_name(THD *thd, const char *db) +bool lock_schema_name(THD *thd, const Lex_ident_db_normalized &db) { MDL_request_list mdl_requests; MDL_request global_request; @@ -899,7 +898,7 @@ bool lock_schema_name(THD *thd, const char *db) return TRUE; MDL_REQUEST_INIT(&global_request, MDL_key::BACKUP, "", "", MDL_BACKUP_DDL, MDL_STATEMENT); - MDL_REQUEST_INIT(&mdl_request, MDL_key::SCHEMA, db, "", MDL_EXCLUSIVE, + MDL_REQUEST_INIT(&mdl_request, MDL_key::SCHEMA, db.str, "", MDL_EXCLUSIVE, MDL_TRANSACTION); mdl_requests.push_front(&mdl_request); @@ -936,14 +935,14 @@ bool lock_schema_name(THD *thd, const char *db) */ bool lock_object_name(THD *thd, MDL_key::enum_mdl_namespace mdl_type, - const char *db, const char *name) + const LEX_CSTRING &db, const LEX_CSTRING &name) { MDL_request_list mdl_requests; MDL_request global_request; MDL_request schema_request; MDL_request mdl_request; - DBUG_SLOW_ASSERT(ok_for_lower_case_names(db)); + DBUG_SLOW_ASSERT(Lex_ident_fs(db).ok_for_lower_case_names()); if (thd->locked_tables_mode) { @@ -952,16 +951,16 @@ bool lock_object_name(THD *thd, MDL_key::enum_mdl_namespace mdl_type, return TRUE; } - DBUG_ASSERT(name); + DBUG_ASSERT(name.str); DEBUG_SYNC(thd, "before_wait_locked_pname"); if (thd->has_read_only_protection()) return TRUE; MDL_REQUEST_INIT(&global_request, MDL_key::BACKUP, "", "", MDL_BACKUP_DDL, MDL_STATEMENT); - MDL_REQUEST_INIT(&schema_request, MDL_key::SCHEMA, db, "", + MDL_REQUEST_INIT(&schema_request, MDL_key::SCHEMA, db.str, "", MDL_INTENTION_EXCLUSIVE, MDL_TRANSACTION); - MDL_REQUEST_INIT(&mdl_request, mdl_type, db, name, MDL_EXCLUSIVE, + MDL_REQUEST_INIT(&mdl_request, mdl_type, db.str, name.str, MDL_EXCLUSIVE, MDL_TRANSACTION); mdl_requests.push_front(&mdl_request); |