Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
8e84b9e7
Commit
8e84b9e7
authored
Aug 30, 2012
by
Seppo Jaakola
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Merged in change sets 3772-3779 from lp:codership-mysql/5.5
parent
ebfa24b1
Changes
15
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
183 additions
and
156 deletions
+183
-156
Docs/README-wsrep
Docs/README-wsrep
+10
-1
cmake/wsrep.cmake
cmake/wsrep.cmake
+1
-1
scripts/wsrep_sst_rsync.sh
scripts/wsrep_sst_rsync.sh
+4
-4
sql/mysqld.cc
sql/mysqld.cc
+1
-1
sql/sql_class.cc
sql/sql_class.cc
+2
-0
sql/sql_class.h
sql/sql_class.h
+1
-0
sql/sql_parse.cc
sql/sql_parse.cc
+1
-1
sql/wsrep_mysqld.cc
sql/wsrep_mysqld.cc
+66
-37
sql/wsrep_mysqld.h
sql/wsrep_mysqld.h
+1
-2
sql/wsrep_priv.h
sql/wsrep_priv.h
+3
-3
sql/wsrep_sst.cc
sql/wsrep_sst.cc
+6
-7
sql/wsrep_utils.cc
sql/wsrep_utils.cc
+58
-39
sql/wsrep_var.cc
sql/wsrep_var.cc
+17
-12
storage/innobase/row/row0ins.c
storage/innobase/row/row0ins.c
+6
-24
storage/xtradb/row/row0ins.c
storage/xtradb/row/row0ins.c
+6
-24
No files found.
Docs/README-wsrep
View file @
8e84b9e7
...
...
@@ -236,7 +236,7 @@ mysql> SHOW STATUS LIKE 'wsrep%';
- If performing a rolling upgrade on a running cluster, set
wsrep_sst_method=mysqldump.
You might also need to configure wsrep_sst_receive_address and
wsrep_sst_auth appropriately.
M
ysqldump is the only way to transfer data
wsrep_sst_auth appropriately.
m
ysqldump is the only way to transfer data
from 5.1.x to 5.5.x reliably.
- remove innodb_plugin settings from configuration files.
...
...
@@ -292,6 +292,15 @@ wsrep_cluster_address=
wsrep_cluster_name="my_wsrep_cluster"
Logical cluster name, must be the same for all nodes of the cluster.
wsrep_node_address=
An option to explicitly specify the network address of the node in the form
<address>[:port] if autoguessing for some reason does not produce desirable
results (multiple network interfaces, NAT, etc.)
If not explicitly overridden by wsrep_sst_receive_address, the <address> part
will be used to listen for SST (see below). And the whole <address>[:port]
will be passed to wsrep provider to be used as a base address in its
communications.
wsrep_node_name=
Human readable node name (for easier log reading only). Defaults to hostname.
...
...
cmake/wsrep.cmake
View file @
8e84b9e7
...
...
@@ -17,7 +17,7 @@
# so WSREP_VERSION is produced regardless
# Set the patch version
SET
(
WSREP_PATCH_VERSION
"
6
"
)
SET
(
WSREP_PATCH_VERSION
"
7
"
)
# Obtain patch revision number
SET
(
WSREP_PATCH_REVNO $ENV{WSREP_REV}
)
...
...
scripts/wsrep_sst_rsync.sh
View file @
8e84b9e7
...
...
@@ -23,14 +23,14 @@ RSYNC_CONF=
cleanup_joiner
()
{
echo
"Joiner cleanup:"
>
&2
set
-x
echo
-n
"Joiner rsync SST cleanup..."
>
&2
local
PID
=
$(
cat
"
$RSYNC_PID
"
2>/dev/null
||
echo
0
)
[
"0"
!=
"
$PID
"
]
&&
kill
$PID
&&
sleep
0.5
&&
kill
-9
$PID
||
:
set
+x
[
"0"
!=
"
$PID
"
]
&&
kill
$PID
&&
sleep
0.5
&&
kill
-9
$PID
>
/dev/null 2>&1
\
||
:
rm
-rf
"
$RSYNC_CONF
"
rm
-rf
"
$MAGIC_FILE
"
rm
-rf
"
$RSYNC_PID
"
echo
" done."
>
&2
}
check_pid
()
...
...
sql/mysqld.cc
View file @
8e84b9e7
sql/sql_class.cc
View file @
8e84b9e7
...
...
@@ -1005,6 +1005,7 @@ THD::THD()
wsrep_retry_query_len
=
0
;
wsrep_retry_command
=
COM_CONNECT
;
wsrep_consistency_check
=
NO_CONSISTENCY_CHECK
;
wsrep_status_vars
=
0
;
#endif
/* Call to init() below requires fully initialized Open_tables_state. */
reset_open_tables_state
(
this
);
...
...
@@ -1557,6 +1558,7 @@ THD::~THD()
mysql_mutex_unlock
(
&
LOCK_wsrep_thd
);
mysql_mutex_destroy
(
&
LOCK_wsrep_thd
);
if
(
wsrep_rli
)
delete
wsrep_rli
;
if
(
wsrep_status_vars
)
wsrep
->
stats_free
(
wsrep
,
wsrep_status_vars
);
#endif
/* Close connection */
#ifndef EMBEDDED_LIBRARY
...
...
sql/sql_class.h
View file @
8e84b9e7
...
...
@@ -2400,6 +2400,7 @@ class THD :public Statement,
enum
enum_server_command
wsrep_retry_command
;
enum
wsrep_consistency_check_mode
wsrep_consistency_check
;
wsrep_stats_var
*
wsrep_status_vars
;
#endif
/* WITH_WSREP */
/**
Internal parser state.
...
...
sql/sql_parse.cc
View file @
8e84b9e7
...
...
@@ -2535,7 +2535,7 @@ mysql_execute_command(THD *thd)
case
SQLCOM_SHOW_STATUS
:
{
#ifdef WITH_WSREP
if
(
WSREP_CLIENT
(
thd
)
&&
wsrep_causal_wait
(
thd
))
goto
error
;
if
(
lex
->
sql_command
==
SQLCOM_SHOW_STATUS
)
wsrep_free_status
(
thd
)
;
#endif
/* WITH_WSREP */
execute_show_status
(
thd
,
all_tables
);
break
;
...
...
sql/wsrep_mysqld.cc
View file @
8e84b9e7
...
...
@@ -54,7 +54,7 @@ my_bool wsrep_replicate_myisam = 0; // enable myisam replication
* End configuration options
*/
static
wsrep_uuid_t
cluster_uuid
=
WSREP_UUID_UNDEFINED
;
static
const
wsrep_uuid_t
cluster_uuid
=
WSREP_UUID_UNDEFINED
;
const
wsrep_uuid_t
*
wsrep_cluster_uuid
()
{
return
&
cluster_uuid
;
...
...
@@ -120,11 +120,11 @@ static void wsrep_log_cb(wsrep_log_level_t level, const char *msg) {
}
}
static
void
wsrep_log_states
(
wsrep_log_level_t
level
,
wsrep_uuid_t
*
group_uuid
,
wsrep_seqno_t
group_seqno
,
wsrep_uuid_t
*
node_uuid
,
wsrep_seqno_t
node_seqno
)
static
void
wsrep_log_states
(
wsrep_log_level_t
const
level
,
const
wsrep_uuid_t
*
const
group_uuid
,
wsrep_seqno_t
const
group_seqno
,
const
wsrep_uuid_t
*
const
node_uuid
,
wsrep_seqno_t
const
node_seqno
)
{
char
uuid_str
[
37
];
char
msg
[
256
];
...
...
@@ -195,7 +195,7 @@ static void wsrep_view_handler_cb (void* app_ctx,
if
(
memcmp
(
&
cluster_uuid
,
&
view
->
uuid
,
sizeof
(
wsrep_uuid_t
)))
{
cluster_uuid
=
view
->
uuid
;
memcpy
((
wsrep_uuid_t
*
)
&
cluster_uuid
,
&
view
->
uuid
,
sizeof
(
cluster_uuid
))
;
wsrep_uuid_print
(
&
cluster_uuid
,
cluster_uuid_str
,
sizeof
(
cluster_uuid_str
));
}
...
...
@@ -213,7 +213,7 @@ static void wsrep_view_handler_cb (void* app_ctx,
/* Proceed further only if view is PRIMARY */
if
(
WSREP_VIEW_PRIMARY
!=
view
->
status
)
{
wsrep_ready
=
FALSE
;
wsrep_ready
_set
(
FALSE
)
;
new_status
=
WSREP_MEMBER_UNDEFINED
;
/* Always record local_uuid and local_seqno in non-prim since this
* may lead to re-initializing provider and start position is
...
...
@@ -234,13 +234,13 @@ static void wsrep_view_handler_cb (void* app_ctx,
if
(
view
->
proto_ver
!=
wsrep_protocol_version
)
{
my_bool
wsrep_ready_saved
=
wsrep_ready
;
wsrep_ready
=
FALSE
;
wsrep_ready
_set
(
FALSE
)
;
WSREP_INFO
(
"closing client connections for "
"protocol change %ld -> %d"
,
wsrep_protocol_version
,
view
->
proto_ver
);
wsrep_close_client_connections
(
TRUE
);
wsrep_protocol_version
=
view
->
proto_ver
;
wsrep_ready
=
wsrep_ready_saved
;
wsrep_ready
_set
(
wsrep_ready_saved
)
;
}
break
;
default:
...
...
@@ -255,7 +255,7 @@ static void wsrep_view_handler_cb (void* app_ctx,
/* After that wsrep will call wsrep_sst_prepare. */
/* keep ready flag 0 until we receive the snapshot */
wsrep_ready
=
FALSE
;
wsrep_ready
_set
(
FALSE
)
;
/* Close client connections to ensure that they don't interfere
* with SST */
...
...
@@ -411,7 +411,7 @@ int wsrep_init()
{
int
rcode
=
-
1
;
wsrep_ready
=
FALSE
;
wsrep_ready
_set
(
FALSE
)
;
assert
(
wsrep_provider
);
wsrep_init_position
();
...
...
@@ -438,8 +438,9 @@ int wsrep_init()
!
strcmp
(
wsrep_provider
,
WSREP_NONE
))
{
// enable normal operation in case no provider is specified
wsrep_ready
=
TRUE
;
wsrep_ready
_set
(
TRUE
)
;
global_system_variables
.
wsrep_on
=
0
;
return
0
;
}
else
{
...
...
@@ -452,41 +453,69 @@ int wsrep_init()
wsrep
->
provider_vendor
,
sizeof
(
provider_vendor
)
-
1
);
}
struct
wsrep_init_args
wsrep_args
;
if
(
!
wsrep_data_home_dir
||
strlen
(
wsrep_data_home_dir
)
==
0
)
wsrep_data_home_dir
=
mysql_real_data_home
;
if
(
strcmp
(
wsrep_provider
,
WSREP_NONE
)
&&
(
!
wsrep_node_incoming_address
||
!
strcmp
(
wsrep_node_incoming_address
,
WSREP_NODE_INCOMING_AUTO
)))
{
static
char
inc_addr
[
256
];
size_t
inc_addr_max
=
sizeof
(
inc_addr
);
size_t
ret
=
default_address
(
inc_addr
,
inc_addr_max
);
if
(
ret
>
0
&&
ret
<
inc_addr_max
)
{
wsrep_node_incoming_address
=
inc_addr
;
char
node_addr
[
512
]
=
{
0
,
};
if
(
!
wsrep_node_address
||
!
strcmp
(
wsrep_node_address
,
""
))
{
size_t
const
node_addr_max
=
sizeof
(
node_addr
);
size_t
const
ret
=
guess_ip
(
node_addr
,
node_addr_max
);
if
(
!
(
ret
>
0
&&
ret
<
node_addr_max
))
{
WSREP_WARN
(
"Failed to guess base node address. Set it explicitly via "
"wsrep_node_address."
);
node_addr
[
0
]
=
'\0'
;
}
else
{
wsrep_node_incoming_address
=
NULL
;
}
else
{
strncpy
(
node_addr
,
wsrep_node_address
,
sizeof
(
node_addr
)
-
1
);
}
char
node_addr
[
256
]
=
{
0
,
};
if
(
!
wsrep_node_address
||
!
strcmp
(
wsrep_node_address
,
""
))
static
char
inc_addr
[
512
]
=
{
0
,
};
if
((
!
wsrep_node_incoming_address
||
!
strcmp
(
wsrep_node_incoming_address
,
WSREP_NODE_INCOMING_AUTO
)))
{
size_t
const
node_addr_len
=
strlen
(
node_addr
);
if
(
node_addr_len
>
0
)
{
size_t
node_addr_max
=
sizeof
(
node_addr
);
size_t
ret
=
default_ip
(
node_addr
,
node_addr_max
);
if
(
!
(
ret
>
0
&&
ret
<
node_addr_max
))
const
char
*
const
colon
=
strrchr
(
node_addr
,
':'
);
if
(
strchr
(
node_addr
,
':'
)
==
colon
)
// 1 or 0 ':'
{
size_t
const
inc_addr_max
=
sizeof
(
inc_addr
);
size_t
const
ip_len
=
colon
?
colon
-
node_addr
:
node_addr_len
;
if
(
ip_len
+
7
/* :55555\0 */
<
inc_addr_max
)
{
memcpy
(
inc_addr
,
node_addr
,
ip_len
);
snprintf
(
inc_addr
+
ip_len
,
inc_addr_max
-
ip_len
,
":%u"
,
mysqld_port
);
}
else
{
WSREP_WARN
(
"Failed to autoguess base node address"
);
node_addr
[
0
]
=
0
;
WSREP_WARN
(
"Guessing address for incoming client connections: "
"address too long."
);
inc_addr
[
0
]
=
'\0'
;
}
}
else
if
(
wsrep_node_address
)
else
{
strncpy
(
node_addr
,
wsrep_node_address
,
sizeof
(
node_addr
)
-
1
);
WSREP_WARN
(
"Guessing address for incoming client connections: "
"too many colons :) ."
);
inc_addr
[
0
]
=
'\0'
;
}
}
// this is to display detected address on SHOW VARIABLES...
wsrep_node_incoming_address
=
inc_addr
;
if
(
!
strlen
(
wsrep_node_incoming_address
))
{
WSREP_WARN
(
"Guessing address for incoming client connections failed. "
"Try setting wsrep_node_incoming_address explicitly."
);
}
}
struct
wsrep_init_args
wsrep_args
;
wsrep_args
.
data_dir
=
wsrep_data_home_dir
;
wsrep_args
.
node_name
=
(
wsrep_node_name
)
?
wsrep_node_name
:
""
;
wsrep_args
.
node_address
=
node_addr
;
...
...
@@ -599,14 +628,14 @@ bool wsrep_start_replication()
!
strcmp
(
wsrep_provider
,
WSREP_NONE
))
{
// enable normal operation in case no provider is specified
wsrep_ready
=
TRUE
;
wsrep_ready
_set
(
TRUE
)
;
return
true
;
}
if
(
!
wsrep_cluster_address
||
strlen
(
wsrep_cluster_address
)
==
0
)
{
// if provider is non-trivial, but no address is specified, wait for address
wsrep_ready
=
FALSE
;
wsrep_ready
_set
(
FALSE
)
;
return
true
;
}
...
...
sql/wsrep_mysqld.h
View file @
8e84b9e7
...
...
@@ -18,10 +18,8 @@
#include "mysqld.h"
typedef
struct
st_mysql_show_var
SHOW_VAR
;
//#include <mysql.h>
#include <sql_priv.h>
#include "../wsrep/wsrep_api.h"
//#include <sql_class.h>
class
set_var
;
class
THD
;
...
...
@@ -77,6 +75,7 @@ extern const char* wsrep_provider_name;
extern
const
char
*
wsrep_provider_version
;
extern
const
char
*
wsrep_provider_vendor
;
extern
int
wsrep_show_status
(
THD
*
thd
,
SHOW_VAR
*
var
,
char
*
buff
);
extern
void
wsrep_free_status
(
THD
*
thd
);
#define WSREP_SST_ADDRESS_AUTO "AUTO"
// MySQL variables funcs
...
...
sql/wsrep_priv.h
View file @
8e84b9e7
...
...
@@ -37,14 +37,14 @@ extern int wsrep_sst_donate_cb (void* app_ctx,
const
char
*
state
,
size_t
state_len
,
bool
bypass
);
extern
size_t
default
_ip
(
char
*
buf
,
size_t
buf_len
);
extern
size_t
default
_address
(
char
*
buf
,
size_t
buf_len
);
extern
size_t
guess
_ip
(
char
*
buf
,
size_t
buf_len
);
extern
size_t
guess
_address
(
char
*
buf
,
size_t
buf_len
);
extern
wsrep_uuid_t
local_uuid
;
extern
wsrep_seqno_t
local_seqno
;
/*! SST thread signals init thread about sst completion */
extern
void
wsrep_sst_complete
(
wsrep_uuid_t
*
uuid
,
wsrep_seqno_t
seqno
,
bool
);
extern
void
wsrep_sst_complete
(
const
wsrep_uuid_t
*
uuid
,
wsrep_seqno_t
,
bool
);
extern
void
wsrep_notify_status
(
wsrep_member_status_t
new_status
,
const
wsrep_view_info_t
*
view
=
0
);
...
...
sql/wsrep_sst.cc
View file @
8e84b9e7
...
...
@@ -202,7 +202,7 @@ bool wsrep_sst_wait ()
}
// Signal end of SST
void
wsrep_sst_complete
(
wsrep_uuid_t
*
sst_uuid
,
void
wsrep_sst_complete
(
const
wsrep_uuid_t
*
sst_uuid
,
wsrep_seqno_t
sst_seqno
,
bool
needed
)
{
...
...
@@ -242,8 +242,7 @@ struct sst_thread_arg
sst_thread_arg
(
const
char
*
c
)
:
cmd
(
c
),
err
(
-
1
),
ret_str
(
0
)
{
mysql_mutex_init
(
key_LOCK_wsrep_sst_thread
,
&
lock
,
MY_MUTEX_INIT_FAST
);
mysql_mutex_init
(
key_LOCK_wsrep_sst_thread
,
&
lock
,
MY_MUTEX_INIT_FAST
);
mysql_cond_init
(
key_COND_wsrep_sst_thread
,
&
cond
,
NULL
);
}
...
...
@@ -382,7 +381,7 @@ static ssize_t sst_prepare_other (const char* method,
const
char
*
sst_dir
=
mysql_real_data_home
;
int
ret
=
snprintf
(
cmd_str
,
cmd_len
,
"wsrep_sst_%s 'joiner' '%s' '%s' '%s' '%s' '%d'
2>sst.err
"
,
"wsrep_sst_%s 'joiner' '%s' '%s' '%s' '%s' '%d'"
,
method
,
addr_in
,
(
sst_auth_real
)
?
sst_auth_real
:
""
,
sst_dir
,
wsrep_defaults_file
,
(
int
)
getpid
());
...
...
@@ -416,7 +415,7 @@ static ssize_t sst_prepare_other (const char* method,
//extern ulong my_bind_addr;
extern
uint
mysqld_port
;
/*! Just tells donor where t
i sent
mysqldump */
/*! Just tells donor where t
o send
mysqldump */
static
ssize_t
sst_prepare_mysqldump
(
const
char
*
addr_in
,
const
char
**
addr_out
)
{
...
...
@@ -497,7 +496,7 @@ ssize_t wsrep_sst_prepare (void** msg)
}
else
{
ssize_t
ret
=
default
_ip
(
ip_buf
,
ip_max
);
ssize_t
ret
=
guess
_ip
(
ip_buf
,
ip_max
);
if
(
ret
&&
ret
<
ip_max
)
{
...
...
sql/wsrep_utils.cc
View file @
8e84b9e7
...
...
@@ -316,7 +316,7 @@ thd::~thd ()
extern
ulong
my_bind_addr
;
extern
uint
mysqld_port
;
size_t
default
_ip
(
char
*
buf
,
size_t
buf_len
)
size_t
guess
_ip
(
char
*
buf
,
size_t
buf_len
)
{
size_t
ip_len
=
0
;
...
...
@@ -325,8 +325,33 @@ size_t default_ip (char* buf, size_t buf_len)
return
0
;
}
if
(
htonl
(
INADDR_ANY
)
==
my_bind_addr
)
{
// binds to all interfaces, try to find the address of the first one
if
(
htonl
(
INADDR_ANY
)
!=
my_bind_addr
)
{
uint8_t
*
b
=
(
uint8_t
*
)
&
my_bind_addr
;
ip_len
=
snprintf
(
buf
,
buf_len
,
"%hhu.%hhu.%hhu.%hhu"
,
b
[
0
],
b
[
1
],
b
[
2
],
b
[
3
]);
return
ip_len
;
}
// mysqld binds to all interfaces - try IP from wsrep_node_address
if
(
wsrep_node_address
&&
wsrep_node_address
[
0
]
!=
'\0'
)
{
const
char
*
const
colon_ptr
=
strchr
(
wsrep_node_address
,
':'
);
if
(
colon_ptr
)
ip_len
=
colon_ptr
-
wsrep_node_address
;
else
ip_len
=
strlen
(
wsrep_node_address
);
if
(
ip_len
>=
buf_len
)
{
WSREP_WARN
(
"default_ip(): buffer too short: %zu <= %zd"
,
buf_len
,
ip_len
);
return
0
;
}
memcpy
(
buf
,
wsrep_node_address
,
ip_len
);
buf
[
ip_len
]
=
'\0'
;
return
ip_len
;
}
// try to find the address of the first one
#if (TARGET_OS_LINUX == 1)
const
char
cmd
[]
=
"/sbin/ifconfig | "
"grep -m1 -1 -E '^[a-z]?eth[0-9]' | tail -n 1 | "
...
...
@@ -370,19 +395,13 @@ size_t default_ip (char* buf, size_t buf_len)
}
return
0
;
}
}
else
{
uint8_t
*
b
=
(
uint8_t
*
)
&
my_bind_addr
;
ip_len
=
snprintf
(
buf
,
buf_len
,
"%hhu.%hhu.%hhu.%hhu"
,
b
[
0
],
b
[
1
],
b
[
2
],
b
[
3
]);
}
return
ip_len
;
}
size_t
default
_address
(
char
*
buf
,
size_t
buf_len
)
size_t
guess
_address
(
char
*
buf
,
size_t
buf_len
)
{
size_t
addr_len
=
default
_ip
(
buf
,
buf_len
);
size_t
addr_len
=
guess
_ip
(
buf
,
buf_len
);
if
(
addr_len
&&
addr_len
<
buf_len
)
{
addr_len
+=
snprintf
(
buf
+
addr_len
,
buf_len
-
addr_len
,
...
...
sql/wsrep_var.cc
View file @
8e84b9e7
...
...
@@ -464,31 +464,27 @@ wsrep_assign_to_mysql (SHOW_VAR* mysql, wsrep_stats_var* wsrep)
}
}
static
wsrep_stats_var
*
wsrep_status_vars
=
NULL
;
#if DYNAMIC
// somehow this mysql status thing works only with statically allocated arrays.
static
SHOW_VAR
*
mysql_status_vars
=
NULL
;
static
int
mysql_status_len
=
-
1
;
#else
static
SHOW_VAR
mysql_status_vars
[
100
+
1
];
static
const
int
mysql_status_len
=
100
;
static
SHOW_VAR
mysql_status_vars
[
512
+
1
];
static
const
int
mysql_status_len
=
512
;
#endif
static
void
export_wsrep_status_to_mysql
()
static
void
export_wsrep_status_to_mysql
(
THD
*
thd
)
{
int
wsrep_status_len
,
i
;
if
(
wsrep_status_vars
)
wsrep
->
stats_free
(
wsrep
,
wsrep_status_vars
);
wsrep_status_vars
=
wsrep
->
stats_get
(
wsrep
);
thd
->
wsrep_status_vars
=
wsrep
->
stats_get
(
wsrep
);
if
(
!
wsrep_status_vars
)
{
if
(
!
thd
->
wsrep_status_vars
)
{
return
;
}
for
(
wsrep_status_len
=
0
;
wsrep_status_vars
[
wsrep_status_len
].
name
!=
NULL
;
thd
->
wsrep_status_vars
[
wsrep_status_len
].
name
!=
NULL
;
wsrep_status_len
++
);
#if DYNAMIC
...
...
@@ -511,7 +507,7 @@ static void export_wsrep_status_to_mysql()
#endif
for
(
i
=
0
;
i
<
wsrep_status_len
;
i
++
)
wsrep_assign_to_mysql
(
mysql_status_vars
+
i
,
wsrep_status_vars
+
i
);
wsrep_assign_to_mysql
(
mysql_status_vars
+
i
,
thd
->
wsrep_status_vars
+
i
);
mysql_status_vars
[
wsrep_status_len
].
name
=
NullS
;
mysql_status_vars
[
wsrep_status_len
].
value
=
NullS
;
...
...
@@ -520,8 +516,17 @@ static void export_wsrep_status_to_mysql()
int
wsrep_show_status
(
THD
*
thd
,
SHOW_VAR
*
var
,
char
*
buff
)
{
export_wsrep_status_to_mysql
();
export_wsrep_status_to_mysql
(
thd
);
var
->
type
=
SHOW_ARRAY
;
var
->
value
=
(
char
*
)
&
mysql_status_vars
;
return
0
;
}
void
wsrep_free_status
(
THD
*
thd
)
{
if
(
thd
->
wsrep_status_vars
)
{
wsrep
->
stats_free
(
wsrep
,
thd
->
wsrep_status_vars
);
thd
->
wsrep_status_vars
=
0
;
}
}
storage/innobase/row/row0ins.c
View file @
8e84b9e7
...
...
@@ -1423,22 +1423,12 @@ row_ins_check_foreign_constraint(
if
(
check_ref
)
{
err
=
DB_SUCCESS
;
#ifdef WITH_WSREP
if
(
thr
->
fk_cascade_depth
==
0
)
{
err
=
wsrep_append_foreign_key
(
thr_get_trx
(
thr
),
foreign
,
rec
,
check_index
,
check_ref
,
TRUE
);
}
else
{
fprintf
(
stderr
,
"WSREP: skipping FK key append
\n
"
);
err
=
wsrep_append_foreign_key
(
thr_get_trx
(
thr
),
foreign
,
rec
,
check_index
,
TRUE
,
TRUE
);
}
#endif
/* WITH_WSREP */
goto
end_scan
;
}
else
if
(
foreign
->
type
!=
0
)
{
...
...
@@ -1469,14 +1459,6 @@ row_ins_check_foreign_constraint(
goto
end_scan
;
}
#ifdef WITH_WSREP_REMOVED
err
=
wsrep_append_foreign_key
(
thr_get_trx
(
thr
),
foreign
,
rec
,
check_index
,
FALSE
);
#endif
/* WITH_WSREP */
/* row_ins_foreign_check_on_constraint
may have repositioned pcur on a
different block */
...
...
storage/xtradb/row/row0ins.c
View file @
8e84b9e7
...
...
@@ -1429,22 +1429,12 @@ row_ins_check_foreign_constraint(
if
(
check_ref
)
{
err
=
DB_SUCCESS
;
#ifdef WITH_WSREP
if
(
thr
->
fk_cascade_depth
==
0
)
{
err
=
wsrep_append_foreign_key
(
thr_get_trx
(
thr
),
foreign
,
rec
,
check_index
,
check_ref
,
TRUE
);
}
else
{
fprintf
(
stderr
,
"WSREP: skipping FK key append
\n
"
);
err
=
wsrep_append_foreign_key
(
thr_get_trx
(
thr
),
foreign
,
rec
,
check_index
,
TRUE
,
TRUE
);
}
#endif
/* WITH_WSREP */
goto
end_scan
;
}
else
if
(
foreign
->
type
!=
0
)
{
...
...
@@ -1475,14 +1465,6 @@ row_ins_check_foreign_constraint(
goto
end_scan
;
}
#ifdef WITH_WSREP_REMOVED
err
=
wsrep_append_foreign_key
(
thr_get_trx
(
thr
),
foreign
,
rec
,
check_index
,
FALSE
);
#endif
/* WITH_WSREP */
/* row_ins_foreign_check_on_constraint
may have repositioned pcur on a
different block */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment