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
e2900df8
Commit
e2900df8
authored
Dec 14, 2000
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
I fixed the bug too and had to merge conflicts
myisammrg/myrg_open.c: merged
parents
b8d7492c
9acffc82
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
77 additions
and
20 deletions
+77
-20
client/mysqltest.c
client/mysqltest.c
+41
-9
myisammrg/myrg_open.c
myisammrg/myrg_open.c
+4
-4
mysql-test/r/rpl000016.result
mysql-test/r/rpl000016.result
+3
-0
mysql-test/t/rpl000016-slave-master-info.opt
mysql-test/t/rpl000016-slave-master-info.opt
+1
-0
mysql-test/t/rpl000016.test
mysql-test/t/rpl000016.test
+19
-0
sql/sql_repl.cc
sql/sql_repl.cc
+9
-7
No files found.
client/mysqltest.c
View file @
e2900df8
...
...
@@ -113,7 +113,7 @@ struct query
enum
{
Q_CONNECTION
,
Q_QUERY
,
Q_CONNECT
,
Q_SLEEP
,
Q_INC
,
Q_DEC
,
Q_SOURCE
,
Q_DISCONNECT
,
Q_LET
,
Q_ECHO
,
Q_WHILE
,
Q_END_BLOCK
,
Q_UNKNOWN
}
type
;
Q_
SYSTEM
,
Q_
UNKNOWN
}
type
;
};
#define DS_CHUNK 16384
...
...
@@ -330,11 +330,21 @@ int do_source(struct query* q)
int
eval_expr
(
VAR
*
v
,
char
*
p
,
char
*
p_end
)
{
VAR
*
vp
;
if
(
(
vp
=
var_get
(
p
,
p_end
,
0
))
)
if
(
*
p
==
'$'
)
{
memcpy
(
v
,
vp
,
sizeof
(
VAR
));
if
((
vp
=
var_get
(
p
,
p_end
,
0
)))
{
memcpy
(
v
,
vp
,
sizeof
(
VAR
));
return
0
;
}
}
else
{
v
->
str_val
=
p
;
v
->
str_val_len
=
p_end
?
p_end
-
p
:
strlen
(
p
);
return
0
;
}
if
(
p_end
)
*
p_end
=
0
;
die
(
"Invalid expr: %s"
,
p
);
...
...
@@ -365,6 +375,25 @@ int do_dec(struct query* q)
return
0
;
}
int
do_system
(
struct
query
*
q
)
{
char
*
p
;
VAR
v
;
p
=
(
char
*
)
q
->
q
+
q
->
first_word_len
;
while
(
*
p
&&
isspace
(
*
p
))
p
++
;
eval_expr
(
&
v
,
p
,
0
);
/* NULL terminated */
if
(
v
.
str_val_len
>
1
)
{
char
expr_buf
[
512
];
if
((
uint
)
v
.
str_val_len
>
sizeof
(
expr_buf
)
-
1
)
v
.
str_val_len
=
sizeof
(
expr_buf
)
-
1
;
memcpy
(
expr_buf
,
v
.
str_val
,
v
.
str_val_len
);
expr_buf
[
v
.
str_val_len
]
=
0
;
if
(
system
(
expr_buf
)
&&
q
->
abort_on_error
)
die
(
"system command '%s' failed"
,
expr_buf
);
}
return
0
;
}
int
do_echo
(
struct
query
*
q
)
{
...
...
@@ -1006,7 +1035,6 @@ void reject_dump(const char* record_file, char* buf, int size)
{
char
reject_file
[
MAX_RECORD_FILE
+
16
];
char
*
p
;
FILE
*
freject
;
p
=
reject_file
;
p
=
safe_str_append
(
p
,
record_file
,
sizeof
(
reject_file
));
...
...
@@ -1021,7 +1049,6 @@ int run_query(MYSQL* mysql, struct query* q)
MYSQL_FIELD
*
fields
;
MYSQL_ROW
row
;
int
num_fields
,
i
,
error
=
0
;
struct
stat
info
;
unsigned
long
*
lengths
;
char
*
val
;
int
len
;
...
...
@@ -1181,6 +1208,8 @@ void get_query_type(struct query* q)
case
6
:
if
(
check_first_word
(
q
,
"source"
,
6
))
q
->
type
=
Q_SOURCE
;
else
if
(
check_first_word
(
q
,
"system"
,
6
))
q
->
type
=
Q_SYSTEM
;
break
;
case
7
:
if
(
check_first_word
(
q
,
"connect"
,
7
))
...
...
@@ -1254,6 +1283,7 @@ int main(int argc, char** argv)
case
Q_INC
:
do_inc
(
q
);
break
;
case
Q_DEC
:
do_dec
(
q
);
break
;
case
Q_ECHO
:
do_echo
(
q
);
break
;
case
Q_SYSTEM
:
do_system
(
q
);
break
;
case
Q_LET
:
do_let
(
q
);
break
;
case
Q_QUERY
:
error
|=
run_query
(
&
cur_con
->
mysql
,
q
);
break
;
default:
processed
=
0
;
break
;
...
...
@@ -1277,10 +1307,12 @@ int main(int argc, char** argv)
close_cons
();
if
(
result_file
)
if
(
!
record
&&
ds_res
.
len
)
error
|=
check_result
(
&
ds_res
,
result_file
);
else
str_to_file
(
result_file
,
ds_res
.
str
,
ds_res
.
len
);
{
if
(
!
record
&&
ds_res
.
len
)
error
|=
check_result
(
&
ds_res
,
result_file
);
else
str_to_file
(
result_file
,
ds_res
.
str
,
ds_res
.
len
);
}
dyn_string_end
(
&
ds_res
);
if
(
!
silent
)
{
...
...
myisammrg/myrg_open.c
View file @
e2900df8
...
...
@@ -45,6 +45,7 @@ int handle_locking;
DBUG_ENTER
(
"myrg_open"
);
LINT_INIT
(
last_isam
);
LINT_INIT
(
m_info
);
isam
=
0
;
errpos
=
files
=
0
;
bzero
((
gptr
)
&
info
,
sizeof
(
info
));
...
...
@@ -84,7 +85,7 @@ int handle_locking;
MYF
(
MY_WME
))))
goto
err
;
*
m_info
=
info
;
m_info
->
open_tables
=
(
MYRG_TABLE
*
)
(
m_info
+
1
)
;
m_info
->
open_tables
=
(
files
)
?
(
MYRG_TABLE
*
)
(
m_info
+
1
)
:
0
;
m_info
->
tables
=
files
;
errpos
=
2
;
...
...
@@ -110,11 +111,10 @@ int handle_locking;
my_errno
=
HA_ERR_RECORD_FILE_FULL
;
goto
err
;
}
if
(
files
)
m_info
->
keys
=
m_info
->
open_tables
->
table
->
s
->
base
.
keys
;
m_info
->
keys
=
(
files
)
?
m_info
->
open_tables
->
table
->
s
->
base
.
keys
:
0
;
bzero
((
char
*
)
&
m_info
->
by_key
,
sizeof
(
m_info
->
by_key
));
/* this works ok if the table list is empty */
m_info
->
end_table
=
m_info
->
open_tables
+
files
;
m_info
->
last_used_table
=
m_info
->
open_tables
;
...
...
mysql-test/r/rpl000016.result
0 → 100644
View file @
e2900df8
s
Could not break slave
Tried hard
mysql-test/t/rpl000016-slave-master-info.opt
0 → 100644
View file @
e2900df8
--server-id=2
mysql-test/t/rpl000016.test
0 → 100644
View file @
e2900df8
connect
(
master
,
localhost
,
root
,,
test
,
0
,
var
/
tmp
/
mysql
.
sock
);
connect
(
slave
,
localhost
,
root
,,
test
,
0
,
var
/
tmp
/
mysql
-
slave
.
sock
);
system
cat
/
dev
/
null
>
var
/
slave
-
data
/
master
.
info
;
system
chmod
000
var
/
slave
-
data
/
master
.
info
;
connection
slave
;
!
slave
start
;
system
chmod
600
var
/
slave
-
data
/
master
.
info
;
!
slave
start
;
!
change
master
to
master_host
=
'127.0.0.1'
,
master_port
=
9306
,
master_user
=
'root'
;
reset
slave
;
!
change
master
to
master_host
=
'127.0.0.1'
,
master_port
=
9306
,
master_user
=
'root'
;
slave
start
;
connection
master
;
drop
table
if
exists
foo
;
create
table
foo
(
s
text
);
insert
into
foo
values
(
'Could not break slave'
),(
'Tried hard'
);
connection
slave
;
sleep
0.3
;
select
*
from
foo
;
sql/sql_repl.cc
View file @
e2900df8
...
...
@@ -34,7 +34,8 @@ static int send_file(THD *thd)
char
fname
[
FN_REFLEN
+
1
];
char
*
buf
;
const
char
*
errmsg
=
0
;
int
old_timeout
,
packet_len
;
int
old_timeout
;
uint
packet_len
;
DBUG_ENTER
(
"send_file"
);
// the client might be slow loading the data, give him wait_timeout to do
...
...
@@ -63,7 +64,6 @@ static int send_file(THD *thd)
// this is needed to make replicate-ignore-db
if
(
!
strcmp
(
fname
,
"/dev/null"
))
goto
end
;
// TODO: work on the well-known system that does not have a /dev/null :-)
if
((
fd
=
my_open
(
fname
,
O_RDONLY
,
MYF
(
MY_WME
)))
<
0
)
{
...
...
@@ -553,9 +553,8 @@ int stop_slave(THD* thd, bool net_report )
// do not abort the slave in the middle of a query, so we do not set
// thd->killed for the slave thread
thd
->
proc_info
=
"waiting for slave to die"
;
while
(
slave_running
)
// we may miss slave start broadcast, if it starts
// very quickly
pthread_cond_wait
(
&
COND_slave_stopped
,
&
LOCK_slave
);
while
(
slave_running
)
pthread_cond_wait
(
&
COND_slave_stopped
,
&
LOCK_slave
);
}
else
err
=
"Slave is not running"
;
...
...
@@ -643,8 +642,11 @@ int change_master(THD* thd)
thd
->
proc_info
=
"changing master"
;
LEX_MASTER_INFO
*
lex_mi
=
&
thd
->
lex
.
mi
;
if
(
!
glob_mi
.
inited
)
init_master_info
(
&
glob_mi
);
if
(
init_master_info
(
&
glob_mi
))
{
send_error
(
&
thd
->
net
,
0
,
"Could not initialize master info"
);
return
1
;
}
pthread_mutex_lock
(
&
glob_mi
.
lock
);
if
((
lex_mi
->
host
||
lex_mi
->
port
)
&&
!
lex_mi
->
log_file_name
&&
!
lex_mi
->
pos
)
...
...
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