mariadb/sql/wsrep_dummy.cc
Daniele Sciascia aab6cefe8d MDEV-20848 Fixes for MTR test galera_sr.GCF-1060 (#1421)
This patch contains two fixes:

* wsrep_handle_mdl_conflict(): handle the case where SR transaction
  is in aborting state. Previously, a BF-BF conflict was reported, and
  the process would abort.
* wsrep_thd_bf_abort(): do not restore thread vars after calling
  wsrep_bf_abort(). Thread vars are already restored in wsrep-lib if
  necessary. This also removes the assumption that the caller of
  wsrep_thd_bf_abort() is the given bf_thd, which is not the case.

Also in this patch:

* Remove unnecessary check for active victim transaction in
  wsrep_thd_bf_abort(): the exact same check is performed later in
  wsrep_bf_abort().
* Make wsrep_thd_bf_abort() and wsrep_log_thd() const-correct.
* Change signature of wsrep_abort_thd() to take THD pointers instead
  of void pointers.
2019-12-04 09:21:14 +02:00

140 lines
3.2 KiB
C++

/* Copyright (C) 2014 SkySQL Ab.
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 Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA. */
#include "mariadb.h"
#include <sql_class.h>
#include <mysql/service_wsrep.h>
my_bool wsrep_thd_is_BF(const THD *, my_bool)
{ return 0; }
int wsrep_is_wsrep_xid(const void* xid)
{ return 0; }
long long wsrep_xid_seqno(const XID* x)
{ return -1; }
const unsigned char* wsrep_xid_uuid(const XID*)
{
static const unsigned char uuid[16]= {0};
return uuid;
}
bool wsrep_prepare_key_for_innodb(THD* thd, const uchar*, size_t, const uchar*, size_t, struct wsrep_buf*, size_t*)
{ return 1; }
bool wsrep_prepare_key(const uchar*, size_t, const uchar*, size_t, struct wsrep_buf*, size_t*)
{ return 0; }
struct wsrep *get_wsrep()
{ return 0; }
my_bool get_wsrep_recovery()
{ return 0; }
bool wsrep_consistency_check(THD *)
{ return 0; }
void wsrep_lock_rollback()
{ }
my_bool wsrep_on(const THD *)
{ return 0; }
void wsrep_thd_LOCK(const THD *)
{ }
void wsrep_thd_UNLOCK(const THD *)
{ }
const char *wsrep_thd_conflict_state_str(THD *)
{ return 0; }
const char *wsrep_thd_exec_mode_str(THD *)
{ return NULL; }
const char *wsrep_thd_query(const THD *)
{ return "NULL"; }
const char *wsrep_thd_query_state_str(THD *)
{ return 0; }
int wsrep_thd_retry_counter(const THD *)
{ return 0; }
bool wsrep_thd_ignore_table(THD *)
{ return 0; }
long long wsrep_thd_trx_seqno(const THD *)
{ return -1; }
my_bool wsrep_thd_is_aborting(const THD *)
{ return 0; }
void wsrep_set_data_home_dir(const char *)
{ }
my_bool wsrep_thd_is_local(const THD *)
{ return 0; }
void wsrep_thd_self_abort(THD *)
{ }
int wsrep_thd_append_key(THD *, const struct wsrep_key*, int, enum Wsrep_service_key_type)
{ return 0; }
const char* wsrep_thd_client_state_str(const THD*)
{ return 0; }
const char* wsrep_thd_client_mode_str(const THD*)
{ return 0; }
void wsrep_thd_auto_increment_variables(THD *thd,
unsigned long long *offset,
unsigned long long *increment)
{
*offset= thd->variables.auto_increment_offset;
*increment= thd->variables.auto_increment_increment;
}
const char* wsrep_thd_transaction_state_str(const THD*)
{ return 0; }
query_id_t wsrep_thd_transaction_id(const THD *)
{ return 0; }
my_bool wsrep_thd_bf_abort(THD *, THD *, my_bool)
{ return 0; }
my_bool wsrep_thd_order_before(const THD*, const THD *)
{ return 0; }
void wsrep_handle_SR_rollback(THD*, THD*)
{ }
my_bool wsrep_thd_skip_locking(const THD*)
{ return 0;}
const char* wsrep_get_sr_table_name()
{ return 0; }
my_bool wsrep_get_debug()
{ return 0;}
void wsrep_commit_ordered(THD* )
{ }
my_bool wsrep_thd_is_applying(const THD*)
{ return 0;}