diff options
-rw-r--r-- | storage/innobase/dict/dict0defrag_bg.cc | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/storage/innobase/dict/dict0defrag_bg.cc b/storage/innobase/dict/dict0defrag_bg.cc index f843fcf5152..043ea24ccbf 100644 --- a/storage/innobase/dict/dict0defrag_bg.cc +++ b/storage/innobase/dict/dict0defrag_bg.cc @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2016, 2021, MariaDB Corporation. +Copyright (c) 2016, 2022, MariaDB Corporation. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -253,7 +253,9 @@ release_and_exit: trx_t *trx= trx_create(); trx->mysql_thd= thd; trx_start_internal(trx); - dberr_t ret= lock_table_for_trx(table_stats, trx, LOCK_X); + dberr_t ret= trx->read_only + ? DB_READ_ONLY + : lock_table_for_trx(table_stats, trx, LOCK_X); if (ret == DB_SUCCESS) ret= lock_table_for_trx(index_stats, trx, LOCK_X); row_mysql_lock_data_dictionary(trx); @@ -388,7 +390,9 @@ release_and_exit: trx_t *trx= trx_create(); trx->mysql_thd= thd; trx_start_internal(trx); - dberr_t ret= lock_table_for_trx(table_stats, trx, LOCK_X); + dberr_t ret= trx->read_only + ? DB_READ_ONLY + : lock_table_for_trx(table_stats, trx, LOCK_X); if (ret == DB_SUCCESS) ret= lock_table_for_trx(index_stats, trx, LOCK_X); |