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
2e6b48af
Commit
2e6b48af
authored
Mar 15, 2002
by
sasha@mysql.sashanet.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
replication updates and bugfixes. Still not perfect - there is some strange
memory corruption I can only repeat on one system.
parent
d993a1c0
Changes
15
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
117 additions
and
14 deletions
+117
-14
mysql-test/r/multi_update.result
mysql-test/r/multi_update.result
+27
-0
mysql-test/r/rpl000015.result
mysql-test/r/rpl000015.result
+3
-3
mysql-test/t/multi_update.test
mysql-test/t/multi_update.test
+11
-0
mysql-test/t/rpl000014.test
mysql-test/t/rpl000014.test
+1
-0
mysql-test/t/rpl000015-slave-master-info.opt
mysql-test/t/rpl000015-slave-master-info.opt
+1
-1
mysql-test/t/rpl000015.test
mysql-test/t/rpl000015.test
+1
-0
sql/lex.h
sql/lex.h
+2
-0
sql/log.cc
sql/log.cc
+1
-0
sql/log_event.cc
sql/log_event.cc
+2
-1
sql/mysqld.cc
sql/mysqld.cc
+1
-0
sql/slave.cc
sql/slave.cc
+9
-1
sql/sql_lex.cc
sql/sql_lex.cc
+1
-0
sql/sql_lex.h
sql/sql_lex.h
+2
-0
sql/sql_repl.cc
sql/sql_repl.cc
+39
-8
sql/sql_yacc.yy
sql/sql_yacc.yy
+16
-0
No files found.
mysql-test/r/multi_update.result
View file @
2e6b48af
...
...
@@ -2,7 +2,34 @@ drop table if exists t1,t2,t3;
create table t1(id1 int not null auto_increment primary key, t char(12));
create table t2(id2 int not null, t char(12));
create table t3(id3 int not null, t char(12), index(id3));
select count(*) from t1 where id1 > 95;
count(*)
5
select count(*) from t2 where id2 > 95;
count(*)
25
select count(*) from t3 where id3 > 95;
count(*)
250
update t1,t2,t3 set t1.t="aaa", t2.t="bbb", t3.t="cc" where t1.id1 = t2.id2 and t2.id2 = t3.id3 and t1.id1 > 90;
select count(*) from t1 where t = "aaa";
count(*)
10
select count(*) from t1 where id1 > 90;
count(*)
10
select count(*) from t2 where t = "bbb";
count(*)
10
select count(*) from t2 where id2 > 90;
count(*)
50
select count(*) from t3 where t = "cc";
count(*)
500
select count(*) from t3 where id3 > 90;
count(*)
500
delete t1.*, t2.*, t3.* from t1,t2,t3 where t1.id1 = t2.id2 and t2.id2 = t3.id3 and t1.id1 > 95;
check table t1, t2, t3;
Table Op Msg_type Msg_text
...
...
mysql-test/r/rpl000015.result
View file @
2e6b48af
...
...
@@ -9,16 +9,16 @@ Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Lo
change master to master_host='127.0.0.1';
show slave status;
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Last_errno Last_error Skip_counter Exec_master_log_pos
127.0.0.1 test MASTER_PORT
60
4 slave-relay-bin.001 4 No No 0 0 0
127.0.0.1 test MASTER_PORT
7
4 slave-relay-bin.001 4 No No 0 0 0
change master to master_host='127.0.0.1',master_user='root',
master_password='',master_port=MASTER_PORT;
show slave status;
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Last_errno Last_error Skip_counter Exec_master_log_pos
127.0.0.1 root MASTER_PORT
60
4 slave-relay-bin.001 4 No No 0 0 0
127.0.0.1 root MASTER_PORT
7
4 slave-relay-bin.001 4 No No 0 0 0
slave start;
show slave status;
Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Last_errno Last_error Skip_counter Exec_master_log_pos
127.0.0.1 root MASTER_PORT
60
master-bin.001 79 slave-relay-bin.001 120 master-bin.001 Yes Yes 0 0 79
127.0.0.1 root MASTER_PORT
7
master-bin.001 79 slave-relay-bin.001 120 master-bin.001 Yes Yes 0 0 79
drop table if exists t1;
create table t1 (n int);
insert into t1 values (10),(45),(90);
...
...
mysql-test/t/multi_update.test
View file @
2e6b48af
...
...
@@ -29,7 +29,18 @@ while ($1)
dec
$
1
;
}
enable_query_log
;
select
count
(
*
)
from
t1
where
id1
>
95
;
select
count
(
*
)
from
t2
where
id2
>
95
;
select
count
(
*
)
from
t3
where
id3
>
95
;
update
t1
,
t2
,
t3
set
t1
.
t
=
"aaa"
,
t2
.
t
=
"bbb"
,
t3
.
t
=
"cc"
where
t1
.
id1
=
t2
.
id2
and
t2
.
id2
=
t3
.
id3
and
t1
.
id1
>
90
;
select
count
(
*
)
from
t1
where
t
=
"aaa"
;
select
count
(
*
)
from
t1
where
id1
>
90
;
select
count
(
*
)
from
t2
where
t
=
"bbb"
;
select
count
(
*
)
from
t2
where
id2
>
90
;
select
count
(
*
)
from
t3
where
t
=
"cc"
;
select
count
(
*
)
from
t3
where
id3
>
90
;
delete
t1
.*
,
t2
.*
,
t3
.*
from
t1
,
t2
,
t3
where
t1
.
id1
=
t2
.
id2
and
t2
.
id2
=
t3
.
id3
and
t1
.
id1
>
95
;
check
table
t1
,
t2
,
t3
;
...
...
mysql-test/t/rpl000014.test
View file @
2e6b48af
...
...
@@ -8,6 +8,7 @@ sync_with_master;
show
slave
status
;
change
master
to
master_log_pos
=
73
;
slave
stop
;
change
master
to
master_log_pos
=
73
;
--
replace_result
3306
MASTER_PORT
9306
MASTER_PORT
3334
MASTER_PORT
3336
MASTER_PORT
show
slave
status
;
...
...
mysql-test/t/rpl000015-slave-master-info.opt
View file @
2e6b48af
--server-id=2
--server-id=2
2 --master-connect-retry=7
mysql-test/t/rpl000015.test
View file @
2e6b48af
...
...
@@ -8,6 +8,7 @@ connection slave;
reset
slave
;
--
replace_result
$MASTER_MYPORT
MASTER_PORT
show
slave
status
;
change
master
to
master_host
=
'127.0.0.1'
;
# The following needs to be cleaned up when change master is fixed
--
replace_result
$MASTER_MYPORT
MASTER_PORT
3306
MASTER_PORT
3334
MASTER_PORT
...
...
sql/lex.h
View file @
2e6b48af
...
...
@@ -280,6 +280,8 @@ static SYMBOL symbols[] = {
{
"READ"
,
SYM
(
READ_SYM
),
0
,
0
},
{
"REAL"
,
SYM
(
REAL
),
0
,
0
},
{
"REFERENCES"
,
SYM
(
REFERENCES
),
0
,
0
},
{
"RELAY_LOG_FILE"
,
SYM
(
RELAY_LOG_FILE_SYM
),
0
,
0
},
{
"RELAY_LOG_POS"
,
SYM
(
RELAY_LOG_POS_SYM
),
0
,
0
},
{
"RELOAD"
,
SYM
(
RELOAD
),
0
,
0
},
{
"REGEXP"
,
SYM
(
REGEXP
),
0
,
0
},
{
"RENAME"
,
SYM
(
RENAME
),
0
,
0
},
...
...
sql/log.cc
View file @
2e6b48af
...
...
@@ -479,6 +479,7 @@ int MYSQL_LOG::purge_first_log(struct st_relay_log_info* rli)
rli
->
relay_log_pos
=
4
;
strnmov
(
rli
->
relay_log_name
,
rli
->
linfo
.
log_file_name
,
sizeof
(
rli
->
relay_log_name
));
flush_relay_log_info
(
rli
);
}
/*
No need to free io_buf because we allocated both fname and io_buf in
...
...
sql/log_event.cc
View file @
2e6b48af
...
...
@@ -1607,7 +1607,8 @@ int Query_log_event::exec_event(struct st_relay_log_info* rli)
{
mysql_parse
(
thd
,
thd
->
query
,
q_len
);
if
(
expected_error
!=
(
actual_error
=
thd
->
net
.
last_errno
)
&&
expected_error
)
(
actual_error
=
thd
->
net
.
last_errno
)
&&
expected_error
&&
!
ignored_error_code
(
actual_error
))
{
const
char
*
errmsg
=
"Slave: did not get the expected error\
running query from master - expected: '%s' (%d), got '%s' (%d)"
;
...
...
sql/mysqld.cc
View file @
2e6b48af
...
...
@@ -1377,6 +1377,7 @@ static void init_signals(void)
sigaction
(
SIGBUS
,
&
sa
,
NULL
);
#endif
sigaction
(
SIGILL
,
&
sa
,
NULL
);
sigaction
(
SIGFPE
,
&
sa
,
NULL
);
}
(
void
)
sigemptyset
(
&
set
);
#ifdef THREAD_SPECIFIC_SIGPIPE
...
...
sql/slave.cc
View file @
2e6b48af
...
...
@@ -345,7 +345,13 @@ int terminate_slave_thread(THD* thd, pthread_mutex_t* term_lock,
}
}
DBUG_ASSERT
(
thd
!=
0
);
/* is is criticate to test if the slave is running. Otherwise, we might
be referening freed memory trying to kick it
*/
if
(
*
slave_running
)
{
KICK_SLAVE
(
thd
);
}
while
(
*
slave_running
)
{
/* there is a small chance that slave thread might miss the first
...
...
@@ -367,8 +373,10 @@ int terminate_slave_thread(THD* thd, pthread_mutex_t* term_lock,
DBUG_ASSERT_LOCK
(
cond_lock
);
pthread_cond_timedwait
(
term_cond
,
cond_lock
,
&
abstime
);
if
(
*
slave_running
)
{
KICK_SLAVE
(
thd
);
}
}
if
(
term_lock
)
pthread_mutex_unlock
(
term_lock
);
return
0
;
...
...
sql/sql_lex.cc
View file @
2e6b48af
...
...
@@ -151,6 +151,7 @@ LEX *lex_start(THD *thd, uchar *buf,uint length)
lex
->
yacc_yyss
=
lex
->
yacc_yyvs
=
0
;
lex
->
ignore_space
=
test
(
thd
->
sql_mode
&
MODE_IGNORE_SPACE
);
lex
->
slave_thd_opt
=
0
;
bzero
(
&
lex
->
mi
,
sizeof
(
lex
->
mi
));
return
lex
;
}
...
...
sql/sql_lex.h
View file @
2e6b48af
...
...
@@ -98,6 +98,8 @@ typedef struct st_lex_master_info
uint
port
,
connect_retry
;
ulonglong
pos
;
ulong
server_id
;
char
*
relay_log_name
;
ulong
relay_log_pos
;
}
LEX_MASTER_INFO
;
...
...
sql/sql_repl.cc
View file @
2e6b48af
...
...
@@ -690,6 +690,7 @@ int change_master(THD* thd, MASTER_INFO* mi)
{
int
error
=
0
,
restart_thread_mask
;
const
char
*
errmsg
=
0
;
bool
need_relay_log_purge
=
1
;
// kill slave thread
lock_slave_threads
(
mi
);
...
...
@@ -742,7 +743,22 @@ int change_master(THD* thd, MASTER_INFO* mi)
if
(
lex_mi
->
connect_retry
)
mi
->
connect_retry
=
lex_mi
->
connect_retry
;
if
(
lex_mi
->
relay_log_name
)
{
need_relay_log_purge
=
0
;
strnmov
(
mi
->
rli
.
relay_log_name
,
lex_mi
->
relay_log_name
,
sizeof
(
mi
->
rli
.
relay_log_name
));
}
if
(
lex_mi
->
relay_log_pos
)
{
need_relay_log_purge
=
0
;
mi
->
rli
.
relay_log_pos
=
lex_mi
->
relay_log_pos
;
}
flush_master_info
(
mi
);
if
(
need_relay_log_purge
)
{
pthread_mutex_unlock
(
&
mi
->
data_lock
);
thd
->
proc_info
=
"purging old relay logs"
;
if
(
purge_relay_logs
(
&
mi
->
rli
,
0
/* not only reset, but also reinit*/
,
...
...
@@ -753,6 +769,21 @@ int change_master(THD* thd, MASTER_INFO* mi)
return
1
;
}
pthread_mutex_lock
(
&
mi
->
rli
.
data_lock
);
}
else
{
const
char
*
msg
;
if
(
init_relay_log_pos
(
&
mi
->
rli
,
0
/*log already inited*/
,
0
/*pos already inited*/
,
0
/*no data lock*/
,
&
msg
))
{
net_printf
(
&
thd
->
net
,
0
,
"Failed initializing relay log position: %s"
,
msg
);
unlock_slave_threads
(
mi
);
return
1
;
}
}
mi
->
rli
.
master_log_pos
=
mi
->
master_log_pos
;
strnmov
(
mi
->
rli
.
master_log_name
,
mi
->
master_log_name
,
sizeof
(
mi
->
rli
.
master_log_name
));
...
...
sql/sql_yacc.yy
View file @
2e6b48af
...
...
@@ -241,6 +241,8 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
%token MASTER_PORT_SYM
%token MASTER_CONNECT_RETRY_SYM
%token MASTER_SERVER_ID_SYM
%token RELAY_LOG_FILE_SYM
%token RELAY_LOG_POS_SYM
%token MATCH
%token MAX_ROWS
%token MAX_QUERIES_PER_HOUR
...
...
@@ -700,6 +702,16 @@ master_def:
{
Lex->mi.connect_retry = $3;
}
|
RELAY_LOG_FILE_SYM EQ TEXT_STRING
{
Lex->mi.relay_log_name = $3.str;
}
|
RELAY_LOG_POS_SYM EQ ULONG_NUM
{
Lex->mi.relay_log_pos = $3;
}
/* create a table */
...
...
@@ -3002,6 +3014,7 @@ keyword:
| ISSUER_SYM {}
| INNOBASE_SYM {}
| INSERT_METHOD {}
| IO_THREAD {}
| LAST_SYM {}
| LEVEL_SYM {}
| LOCAL_SYM {}
...
...
@@ -3044,6 +3057,8 @@ keyword:
| RAID_CHUNKSIZE {}
| RAID_STRIPED_SYM {}
| RAID_TYPE {}
| RELAY_LOG_FILE_SYM {}
| RELAY_LOG_POS_SYM {}
| RELOAD {}
| REPAIR {}
| REPEATABLE_SYM {}
...
...
@@ -3063,6 +3078,7 @@ keyword:
| SQL_CACHE_SYM {}
| SQL_NO_CACHE_SYM {}
| SQL_QUERY_CACHE_TYPE_SYM {}
| SQL_THREAD {}
| START_SYM {}
| STATUS_SYM {}
| STOP_SYM {}
...
...
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