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