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
29af14af
Commit
29af14af
authored
Sep 04, 2007
by
tomas@whalegate.ndb.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-target-5.1.22
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb
parents
9b913a19
58ecaaa8
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
75 additions
and
31 deletions
+75
-31
mysql-test/suite/rpl_ndb/t/disabled.def
mysql-test/suite/rpl_ndb/t/disabled.def
+1
-0
sql/slave.cc
sql/slave.cc
+64
-27
sql/slave.h
sql/slave.h
+0
-4
storage/innobase/row/row0sel.c
storage/innobase/row/row0sel.c
+10
-0
No files found.
mysql-test/suite/rpl_ndb/t/disabled.def
View file @
29af14af
...
@@ -13,6 +13,7 @@
...
@@ -13,6 +13,7 @@
rpl_ndb_2innodb : BUG#19227 2006-04-20 pekka pk delete apparently not replicated
rpl_ndb_2innodb : BUG#19227 2006-04-20 pekka pk delete apparently not replicated
rpl_ndb_2myisam : BUG#19227 Seems to pass currently
rpl_ndb_2myisam : BUG#19227 Seems to pass currently
rpl_ndb_2other : BUG#21842 2007-08-30 tsmith test has never worked on bigendian (sol10-sparc-a, powermacg5
rpl_ndb_dd_partitions : BUG#19259 2006-04-21 rpl_ndb_dd_partitions fails on s/AMD
rpl_ndb_dd_partitions : BUG#19259 2006-04-21 rpl_ndb_dd_partitions fails on s/AMD
rpl_ndb_innodb2ndb : Bug#29549 rpl_ndb_myisam2ndb,rpl_ndb_innodb2ndb failed on Solaris for pack_length issue
rpl_ndb_innodb2ndb : Bug#29549 rpl_ndb_myisam2ndb,rpl_ndb_innodb2ndb failed on Solaris for pack_length issue
rpl_ndb_myisam2ndb : Bug#29549 rpl_ndb_myisam2ndb,rpl_ndb_innodb2ndb failed on Solaris for pack_length issue
rpl_ndb_myisam2ndb : Bug#29549 rpl_ndb_myisam2ndb,rpl_ndb_innodb2ndb failed on Solaris for pack_length issue
...
...
sql/slave.cc
View file @
29af14af
...
@@ -132,6 +132,11 @@ static int create_table_from_dump(THD* thd, MYSQL *mysql, const char* db,
...
@@ -132,6 +132,11 @@ static int create_table_from_dump(THD* thd, MYSQL *mysql, const char* db,
const
char
*
table_name
,
bool
overwrite
);
const
char
*
table_name
,
bool
overwrite
);
static
int
get_master_version_and_clock
(
MYSQL
*
mysql
,
MASTER_INFO
*
mi
);
static
int
get_master_version_and_clock
(
MYSQL
*
mysql
,
MASTER_INFO
*
mi
);
static
Log_event
*
next_event
(
RELAY_LOG_INFO
*
rli
);
static
Log_event
*
next_event
(
RELAY_LOG_INFO
*
rli
);
static
int
terminate_slave_thread
(
THD
*
thd
,
pthread_mutex_t
*
term_lock
,
pthread_cond_t
*
term_cond
,
volatile
uint
*
slave_running
,
bool
skip_lock
);
/*
/*
Find out which replications threads are running
Find out which replications threads are running
...
@@ -312,35 +317,26 @@ int terminate_slave_threads(MASTER_INFO* mi,int thread_mask,bool skip_lock)
...
@@ -312,35 +317,26 @@ int terminate_slave_threads(MASTER_INFO* mi,int thread_mask,bool skip_lock)
DBUG_RETURN
(
0
);
/* successfully do nothing */
DBUG_RETURN
(
0
);
/* successfully do nothing */
int
error
,
force_all
=
(
thread_mask
&
SLAVE_FORCE_ALL
);
int
error
,
force_all
=
(
thread_mask
&
SLAVE_FORCE_ALL
);
pthread_mutex_t
*
sql_lock
=
&
mi
->
rli
.
run_lock
,
*
io_lock
=
&
mi
->
run_lock
;
pthread_mutex_t
*
sql_lock
=
&
mi
->
rli
.
run_lock
,
*
io_lock
=
&
mi
->
run_lock
;
pthread_mutex_t
*
sql_cond_lock
,
*
io_cond_lock
;
sql_cond_lock
=
sql_lock
;
if
((
thread_mask
&
(
SLAVE_IO
|
SLAVE_FORCE_ALL
)))
io_cond_lock
=
io_lock
;
if
(
skip_lock
)
{
sql_lock
=
io_lock
=
0
;
}
if
((
thread_mask
&
(
SLAVE_IO
|
SLAVE_FORCE_ALL
))
&&
mi
->
slave_running
)
{
{
DBUG_PRINT
(
"info"
,(
"Terminating IO thread"
));
DBUG_PRINT
(
"info"
,(
"Terminating IO thread"
));
mi
->
abort_slave
=
1
;
mi
->
abort_slave
=
1
;
if
((
error
=
terminate_slave_thread
(
mi
->
io_thd
,
io_lock
,
if
((
error
=
terminate_slave_thread
(
mi
->
io_thd
,
io_lock
,
io_cond_lock
,
&
mi
->
stop_cond
,
&
mi
->
stop_cond
,
&
mi
->
slave_running
))
&&
&
mi
->
slave_running
,
skip_lock
))
&&
!
force_all
)
!
force_all
)
DBUG_RETURN
(
error
);
DBUG_RETURN
(
error
);
}
}
if
((
thread_mask
&
(
SLAVE_SQL
|
SLAVE_FORCE_ALL
))
&&
mi
->
rli
.
slave_running
)
if
((
thread_mask
&
(
SLAVE_SQL
|
SLAVE_FORCE_ALL
)))
{
{
DBUG_PRINT
(
"info"
,(
"Terminating SQL thread"
));
DBUG_PRINT
(
"info"
,(
"Terminating SQL thread"
));
DBUG_ASSERT
(
mi
->
rli
.
sql_thd
!=
0
)
;
mi
->
rli
.
abort_slave
=
1
;
mi
->
rli
.
abort_slave
=
1
;
if
((
error
=
terminate_slave_thread
(
mi
->
rli
.
sql_thd
,
sql_lock
,
if
((
error
=
terminate_slave_thread
(
mi
->
rli
.
sql_thd
,
sql_lock
,
sql_cond_lock
,
&
mi
->
rli
.
stop_cond
,
&
mi
->
rli
.
stop_cond
,
&
mi
->
rli
.
slave_running
))
&&
&
mi
->
rli
.
slave_running
,
skip_lock
))
&&
!
force_all
)
!
force_all
)
DBUG_RETURN
(
error
);
DBUG_RETURN
(
error
);
}
}
...
@@ -348,23 +344,60 @@ int terminate_slave_threads(MASTER_INFO* mi,int thread_mask,bool skip_lock)
...
@@ -348,23 +344,60 @@ int terminate_slave_threads(MASTER_INFO* mi,int thread_mask,bool skip_lock)
}
}
int
terminate_slave_thread
(
THD
*
thd
,
pthread_mutex_t
*
term_lock
,
/**
pthread_mutex_t
*
cond_lock
,
Wait for a slave thread to terminate.
pthread_cond_t
*
term_cond
,
volatile
uint
*
slave_running
)
This function is called after requesting the thread to terminate
(by setting @c abort_slave member of @c Relay_log_info or @c
Master_info structure to 1). Termination of the thread is
controlled with the the predicate <code>*slave_running</code>.
Function will acquire @c term_lock before waiting on the condition
unless @c skip_lock is true in which case the mutex should be owned
by the caller of this function and will remain acquired after
return from the function.
@param term_lock
Associated lock to use when waiting for @c term_cond
@param term_cond
Condition that is signalled when the thread has terminated
@param slave_running
Pointer to predicate to check for slave thread termination
@param skip_lock
If @c true the lock will not be acquired before waiting on
the condition. In this case, it is assumed that the calling
function acquires the lock before calling this function.
@retval 0 All OK
*/
static
int
terminate_slave_thread
(
THD
*
thd
,
pthread_mutex_t
*
term_lock
,
pthread_cond_t
*
term_cond
,
volatile
uint
*
slave_running
,
bool
skip_lock
)
{
{
int
error
;
DBUG_ENTER
(
"terminate_slave_thread"
);
DBUG_ENTER
(
"terminate_slave_thread"
);
if
(
term_lock
)
{
if
(
!
skip_lock
)
pthread_mutex_lock
(
term_lock
);
pthread_mutex_lock
(
term_lock
);
if
(
!*
slave_running
)
{
safe_mutex_assert_owner
(
term_lock
);
if
(
!*
slave_running
)
{
if
(
!
skip_lock
)
pthread_mutex_unlock
(
term_lock
);
pthread_mutex_unlock
(
term_lock
);
DBUG_RETURN
(
ER_SLAVE_NOT_RUNNING
);
DBUG_RETURN
(
ER_SLAVE_NOT_RUNNING
);
}
}
}
DBUG_ASSERT
(
thd
!=
0
);
DBUG_ASSERT
(
thd
!=
0
);
THD_CHECK_SENTRY
(
thd
);
THD_CHECK_SENTRY
(
thd
);
/*
/*
Is is critical to test if the slave is running. Otherwise, we might
Is is critical to test if the slave is running. Otherwise, we might
be referening freed memory trying to kick it
be referening freed memory trying to kick it
...
@@ -380,9 +413,13 @@ int terminate_slave_thread(THD* thd, pthread_mutex_t* term_lock,
...
@@ -380,9 +413,13 @@ int terminate_slave_thread(THD* thd, pthread_mutex_t* term_lock,
*/
*/
struct
timespec
abstime
;
struct
timespec
abstime
;
set_timespec
(
abstime
,
2
);
set_timespec
(
abstime
,
2
);
pthread_cond_timedwait
(
term_cond
,
cond_lock
,
&
abstime
);
error
=
pthread_cond_timedwait
(
term_cond
,
term_lock
,
&
abstime
);
DBUG_ASSERT
(
error
==
ETIMEDOUT
||
error
==
0
);
}
}
if
(
term_lock
)
DBUG_ASSERT
(
*
slave_running
==
0
);
if
(
!
skip_lock
)
pthread_mutex_unlock
(
term_lock
);
pthread_mutex_unlock
(
term_lock
);
DBUG_RETURN
(
0
);
DBUG_RETURN
(
0
);
}
}
...
...
sql/slave.h
View file @
29af14af
...
@@ -133,10 +133,6 @@ bool flush_relay_log_info(RELAY_LOG_INFO* rli);
...
@@ -133,10 +133,6 @@ bool flush_relay_log_info(RELAY_LOG_INFO* rli);
int
register_slave_on_master
(
MYSQL
*
mysql
);
int
register_slave_on_master
(
MYSQL
*
mysql
);
int
terminate_slave_threads
(
MASTER_INFO
*
mi
,
int
thread_mask
,
int
terminate_slave_threads
(
MASTER_INFO
*
mi
,
int
thread_mask
,
bool
skip_lock
=
0
);
bool
skip_lock
=
0
);
int
terminate_slave_thread
(
THD
*
thd
,
pthread_mutex_t
*
term_mutex
,
pthread_mutex_t
*
cond_lock
,
pthread_cond_t
*
term_cond
,
volatile
uint
*
slave_running
);
int
start_slave_threads
(
bool
need_slave_mutex
,
bool
wait_for_start
,
int
start_slave_threads
(
bool
need_slave_mutex
,
bool
wait_for_start
,
MASTER_INFO
*
mi
,
const
char
*
master_info_fname
,
MASTER_INFO
*
mi
,
const
char
*
master_info_fname
,
const
char
*
slave_info_fname
,
int
thread_mask
);
const
char
*
slave_info_fname
,
int
thread_mask
);
...
...
storage/innobase/row/row0sel.c
View file @
29af14af
...
@@ -4555,6 +4555,15 @@ row_search_autoinc_read_column(
...
@@ -4555,6 +4555,15 @@ row_search_autoinc_read_column(
ut_a
(
len
!=
UNIV_SQL_NULL
);
ut_a
(
len
!=
UNIV_SQL_NULL
);
ut_a
(
len
<=
sizeof
value
);
ut_a
(
len
<=
sizeof
value
);
#ifdef WORDS_BIGENDIAN
/* Copy integer data and restore sign bit */
memcpy
((
ptr
=
dest
),
data
,
len
);
if
(
!
unsigned_type
)
{
dest
[
0
]
^=
128
;
}
#else
/* Convert integer data from Innobase to a little-endian format,
/* Convert integer data from Innobase to a little-endian format,
sign bit restored to normal */
sign bit restored to normal */
...
@@ -4566,6 +4575,7 @@ row_search_autoinc_read_column(
...
@@ -4566,6 +4575,7 @@ row_search_autoinc_read_column(
if
(
!
unsigned_type
)
{
if
(
!
unsigned_type
)
{
dest
[
len
-
1
]
^=
128
;
dest
[
len
-
1
]
^=
128
;
}
}
#endif
/* The assumption here is that the AUTOINC value can't be negative.*/
/* The assumption here is that the AUTOINC value can't be negative.*/
switch
(
len
)
{
switch
(
len
)
{
...
...
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