1 /* -*- c-basic-offset: 2 -*- */ 2 /* 3 Copyright(C) 2012 Kouhei Sutou <kou@clear-code.com> 4 5 This library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 This library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with this library; if not, write to the Free Software 17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA 18 */ 19 20 #include "mrn_auto_increment_value_lock.hpp" 21 22 #if MYSQL_VERSION_ID >= 50500 23 # define AUTO_INCREMENT_VALUE_MUTEX(table_share) (&(table_share->LOCK_ha_data)) 24 #else 25 # define AUTO_INCREMENT_VALUE_MUTEX(table_share) (&(table_share->mutex)) 26 #endif 27 28 namespace mrn { AutoIncrementValueLock(TABLE_SHARE * table_share)29 AutoIncrementValueLock::AutoIncrementValueLock(TABLE_SHARE *table_share) 30 : table_share_(table_share), 31 need_lock_(table_share_->tmp_table == NO_TMP_TABLE) { 32 if (need_lock_) { 33 mysql_mutex_lock(AUTO_INCREMENT_VALUE_MUTEX(table_share_)); 34 } 35 } 36 ~AutoIncrementValueLock()37 AutoIncrementValueLock::~AutoIncrementValueLock() { 38 if (need_lock_) { 39 mysql_mutex_unlock(AUTO_INCREMENT_VALUE_MUTEX(table_share_)); 40 } 41 } 42 } 43