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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
a71f298f
Commit
a71f298f
authored
Feb 20, 2008
by
mkindahl@dl145h.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge dl145h.mysql.com:/data0/mkindahl/mysql-5.1
into dl145h.mysql.com:/data0/mkindahl/mysql-5.1-rpl
parents
39c20516
80dc1ee7
Changes
31
Show whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
437 additions
and
365 deletions
+437
-365
mysql-test/extra/rpl_tests/rpl_ndb_2multi_eng.test
mysql-test/extra/rpl_tests/rpl_ndb_2multi_eng.test
+1
-0
mysql-test/include/ctype_german.inc
mysql-test/include/ctype_german.inc
+40
-0
mysql-test/lib/mtr_report.pl
mysql-test/lib/mtr_report.pl
+5
-0
mysql-test/r/ctype_latin1_de.result
mysql-test/r/ctype_latin1_de.result
+35
-0
mysql-test/r/ctype_uca.result
mysql-test/r/ctype_uca.result
+35
-0
mysql-test/r/ctype_ucs.result
mysql-test/r/ctype_ucs.result
+35
-0
mysql-test/r/ctype_utf8.result
mysql-test/r/ctype_utf8.result
+35
-0
mysql-test/r/multi_update.result
mysql-test/r/multi_update.result
+2
-2
mysql-test/r/mysqldump.result
mysql-test/r/mysqldump.result
+0
-175
mysql-test/r/variables-notembedded.result
mysql-test/r/variables-notembedded.result
+4
-6
mysql-test/suite/bugs/r/rpl_bug31583.result
mysql-test/suite/bugs/r/rpl_bug31583.result
+1
-0
mysql-test/suite/ndb/r/ndb_binlog_format.result
mysql-test/suite/ndb/r/ndb_binlog_format.result
+0
-2
mysql-test/suite/rpl/r/rpl_bug33931.result
mysql-test/suite/rpl/r/rpl_bug33931.result
+43
-0
mysql-test/suite/rpl/t/rpl_bug33931-slave.opt
mysql-test/suite/rpl/t/rpl_bug33931-slave.opt
+1
-0
mysql-test/suite/rpl/t/rpl_bug33931.test
mysql-test/suite/rpl/t/rpl_bug33931.test
+37
-0
mysql-test/suite/rpl/t/rpl_variables-master.opt
mysql-test/suite/rpl/t/rpl_variables-master.opt
+0
-1
mysql-test/t/ctype_latin1_de.test
mysql-test/t/ctype_latin1_de.test
+1
-0
mysql-test/t/ctype_uca.test
mysql-test/t/ctype_uca.test
+1
-0
mysql-test/t/ctype_ucs.test
mysql-test/t/ctype_ucs.test
+1
-0
mysql-test/t/ctype_utf8.test
mysql-test/t/ctype_utf8.test
+1
-0
mysql-test/t/mysqldump.test
mysql-test/t/mysqldump.test
+6
-0
mysql-test/t/variables-notembedded-master.opt
mysql-test/t/variables-notembedded-master.opt
+1
-0
mysql-test/t/variables-notembedded.test
mysql-test/t/variables-notembedded.test
+13
-3
sql/handler.cc
sql/handler.cc
+95
-114
sql/log.cc
sql/log.cc
+0
-29
sql/log_event.h
sql/log_event.h
+26
-20
sql/slave.cc
sql/slave.cc
+15
-5
sql/sql_class.h
sql/sql_class.h
+0
-1
sql/sql_delete.cc
sql/sql_delete.cc
+0
-4
sql/sql_update.cc
sql/sql_update.cc
+2
-2
strings/ctype-utf8.c
strings/ctype-utf8.c
+1
-1
No files found.
mysql-test/extra/rpl_tests/rpl_ndb_2multi_eng.test
View file @
a71f298f
...
...
@@ -342,5 +342,6 @@ SHOW CREATE TABLE t1;
--
echo
---
Do
Cleanup
---
DROP
TABLE
IF
EXISTS
t1
;
sync_slave_with_master
;
# End of 5.1 test case
mysql-test/include/ctype_german.inc
0 → 100644
View file @
a71f298f
#
# Bug #27877 incorrect german order in utf8_general_ci
#
# Testing if "SHARP S" is equal to "S",
# like in latin1_german1_ci, utf8_general_ci, ucs2_general_ci
# Or if "SHART S" is equal to "SS",
# like in latin1_german2_ci, utf8_unicode_ci, ucs2_unicode_ci
#
# Also testing A-uml, O-uml, U-uml
#
--
disable_warnings
drop
table
if
exists
t1
;
--
enable_warnings
#
# Create a table with a varchar(x) column,
# using current values of
# @@character_set_connection and @@collation_connection.
#
create
table
t1
as
select
repeat
(
' '
,
64
)
as
s1
;
select
collation
(
s1
)
from
t1
;
delete
from
t1
;
#
# Populate data
#
insert
into
t1
values
(
'a'
),(
'ae'
),(
_latin1
0xE4
);
insert
into
t1
values
(
'o'
),(
'oe'
),(
_latin1
0xF6
);
insert
into
t1
values
(
's'
),(
'ss'
),(
_latin1
0xDF
);
insert
into
t1
values
(
'u'
),(
'ue'
),(
_latin1
0xFC
);
#
# Check order
#
select
s1
,
hex
(
s1
)
from
t1
order
by
s1
,
binary
s1
;
select
group_concat
(
s1
order
by
binary
s1
)
from
t1
group
by
s1
;
drop
table
t1
;
mysql-test/lib/mtr_report.pl
View file @
a71f298f
...
...
@@ -383,6 +383,11 @@ sub mtr_report_stats ($) {
(
/Failed to write to mysql\.\w+_log/
))
or
# rpl_bug33931 has deliberate failures
(
$testname
eq
'
rpl.rpl_bug33931
'
and
(
/Failed during slave.*thread initialization/
))
or
# rpl_temporary has an error on slave that can be ignored
(
$testname
eq
'
rpl.rpl_temporary
'
and
(
/Slave: Can\'t find record in \'user\' Error_code: 1032/
...
...
mysql-test/r/ctype_latin1_de.result
View file @
a71f298f
...
...
@@ -326,6 +326,41 @@ latin1_german2_ci 6109
latin1_german2_ci 61
latin1_german2_ci 6120
drop table t1;
drop table if exists t1;
create table t1 as select repeat(' ', 64) as s1;
select collation(s1) from t1;
collation(s1)
latin1_german2_ci
delete from t1;
insert into t1 values ('a'),('ae'),(_latin1 0xE4);
insert into t1 values ('o'),('oe'),(_latin1 0xF6);
insert into t1 values ('s'),('ss'),(_latin1 0xDF);
insert into t1 values ('u'),('ue'),(_latin1 0xFC);
select s1, hex(s1) from t1 order by s1, binary s1;
s1 hex(s1)
a 61
ae 6165
E4
o 6F
oe 6F65
F6
s 73
ss 7373
DF
u 75
ue 7565
FC
select group_concat(s1 order by binary s1) from t1 group by s1;
group_concat(s1 order by binary s1)
a
ae,
o
oe,
s
ss,
u
ue,
drop table t1;
SET NAMES latin1;
CREATE TABLE t1 (
col1 varchar(255) NOT NULL default ''
...
...
mysql-test/r/ctype_uca.result
View file @
a71f298f
...
...
@@ -2647,6 +2647,41 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
c2h
ab_def
drop table t1;
drop table if exists t1;
create table t1 as select repeat(' ', 64) as s1;
select collation(s1) from t1;
collation(s1)
utf8_unicode_ci
delete from t1;
insert into t1 values ('a'),('ae'),(_latin1 0xE4);
insert into t1 values ('o'),('oe'),(_latin1 0xF6);
insert into t1 values ('s'),('ss'),(_latin1 0xDF);
insert into t1 values ('u'),('ue'),(_latin1 0xFC);
select s1, hex(s1) from t1 order by s1, binary s1;
s1 hex(s1)
a 61
ä C3A4
ae 6165
o 6F
ö C3B6
oe 6F65
s 73
ss 7373
ß C39F
u 75
ü C3BC
ue 7565
select group_concat(s1 order by binary s1) from t1 group by s1;
group_concat(s1 order by binary s1)
a,ä
ae
o,ö
oe
s
ss,ß
u,ü
ue
drop table t1;
CREATE TABLE t1 (id int, a varchar(30) character set utf8);
INSERT INTO t1 VALUES (1, _ucs2 0x01310069), (2, _ucs2 0x01310131);
INSERT INTO t1 VALUES (3, _ucs2 0x00690069), (4, _ucs2 0x01300049);
...
...
mysql-test/r/ctype_ucs.result
View file @
a71f298f
...
...
@@ -613,6 +613,41 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
c2h
ab_def
drop table t1;
drop table if exists t1;
create table t1 as select repeat(' ', 64) as s1;
select collation(s1) from t1;
collation(s1)
ucs2_general_ci
delete from t1;
insert into t1 values ('a'),('ae'),(_latin1 0xE4);
insert into t1 values ('o'),('oe'),(_latin1 0xF6);
insert into t1 values ('s'),('ss'),(_latin1 0xDF);
insert into t1 values ('u'),('ue'),(_latin1 0xFC);
select s1, hex(s1) from t1 order by s1, binary s1;
s1 hex(s1)
a 0061
00E4
ae 00610065
o 006F
00F6
oe 006F0065
s 0073
00DF
ss 00730073
u 0075
00FC
ue 00750065
select group_concat(s1 order by binary s1) from t1 group by s1;
group_concat(s1 order by binary s1)
a,
ae
o,
oe
s,
ss
u,
ue
drop table t1;
SET NAMES latin1;
SET collation_connection='ucs2_bin';
create table t1 select repeat('a',4000) a;
...
...
mysql-test/r/ctype_utf8.result
View file @
a71f298f
...
...
@@ -939,6 +939,41 @@ select c1 as c2h from t1 where c1 like 'ab#_def' escape '#';
c2h
ab_def
drop table t1;
drop table if exists t1;
create table t1 as select repeat(' ', 64) as s1;
select collation(s1) from t1;
collation(s1)
utf8_general_ci
delete from t1;
insert into t1 values ('a'),('ae'),(_latin1 0xE4);
insert into t1 values ('o'),('oe'),(_latin1 0xF6);
insert into t1 values ('s'),('ss'),(_latin1 0xDF);
insert into t1 values ('u'),('ue'),(_latin1 0xFC);
select s1, hex(s1) from t1 order by s1, binary s1;
s1 hex(s1)
a 61
ä C3A4
ae 6165
o 6F
ö C3B6
oe 6F65
s 73
ß C39F
ss 7373
u 75
ü C3BC
ue 7565
select group_concat(s1 order by binary s1) from t1 group by s1;
group_concat(s1 order by binary s1)
a,ä
ae
o,ö
oe
s,ß
ss
u,ü
ue
drop table t1;
SET collation_connection='utf8_bin';
create table t1 select repeat('a',4000) a;
delete from t1;
...
...
mysql-test/r/multi_update.result
View file @
a71f298f
...
...
@@ -627,7 +627,7 @@ a b
4 4
show master status /* there must be the UPDATE query event */;
File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001
336
master-bin.000001
197
delete from t1;
delete from t2;
insert into t1 values (1,2),(3,4),(4,4);
...
...
@@ -637,7 +637,7 @@ UPDATE t2,t1 SET t2.a=t2.b where t2.a=t1.a;
ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
show master status /* there must be the UPDATE query event */;
File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001
351
master-bin.000001
212
drop table t1, t2;
set @@session.binlog_format= @sav_binlog_format;
drop table if exists t1, t2, t3;
...
...
mysql-test/r/mysqldump.result
View file @
a71f298f
...
...
@@ -3870,181 +3870,6 @@ UNLOCK TABLES;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
DROP TABLE t1;
create table t1 (a text , b text);
create table t2 (a text , b text);
insert t1 values ("Duck, Duck", "goose");
insert t1 values ("Duck, Duck", "pidgeon");
insert t2 values ("We the people", "in order to perform");
insert t2 values ("a more perfect", "union");
select * from t1;
a b
Duck, Duck goose
Duck, Duck pidgeon
select * from t2;
a b
We the people in order to perform
a more perfect union
test.t1: Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
test.t2: Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
select * from t1;
a b
Duck, Duck goose
Duck, Duck pidgeon
Duck, Duck goose
Duck, Duck pidgeon
select * from t2;
a b
We the people in order to perform
a more perfect union
We the people in order to perform
a more perfect union
create table words(a varchar(255));
create table words2(b varchar(255));
select * from t1;
a b
Duck, Duck goose
Duck, Duck pidgeon
Duck, Duck goose
Duck, Duck pidgeon
Duck, Duck goose
Duck, Duck pidgeon
select * from t2;
a b
We the people in order to perform
a more perfect union
We the people in order to perform
a more perfect union
We the people in order to perform
a more perfect union
select * from words;
a
Aarhus
Aaron
Ababa
aback
abaft
abandon
abandoned
abandoning
abandonment
abandons
Aarhus
Aaron
Ababa
aback
abaft
abandon
abandoned
abandoning
abandonment
abandons
abase
abased
abasement
abasements
abases
abash
abashed
abashes
abashing
abasing
abate
abated
abatement
abatements
abater
abates
abating
Abba
abbe
abbey
abbeys
abbot
abbots
Abbott
abbreviate
abbreviated
abbreviates
abbreviating
abbreviation
abbreviations
Abby
abdomen
abdomens
abdominal
abduct
abducted
abduction
abductions
abductor
abductors
abducts
Abe
abed
Abel
Abelian
Abelson
Aberdeen
Abernathy
aberrant
aberration
select * from words2;
b
abase
abased
abasement
abasements
abases
abash
abashed
abashes
abashing
abasing
abate
abated
abatement
abatements
abater
abates
abating
Abba
abbe
abbey
abbeys
abbot
abbots
Abbott
abbreviate
abbreviated
abbreviates
abbreviating
abbreviation
abbreviations
Abby
abdomen
abdomens
abdominal
abduct
abducted
abduction
abductions
abductor
abductors
abducts
Abe
abed
Abel
Abelian
Abelson
Aberdeen
Abernathy
aberrant
aberration
drop table words;
mysql-import: Error: 1146, Table 'test.words' doesn't exist, when using table: words
drop table t1;
drop table t2;
drop table words2;
#
# BUG# 16853: mysqldump doesn't show events
#
...
...
mysql-test/
suite/rpl/r/rpl_variables
.result
→
mysql-test/
r/variables-notembedded
.result
View file @
a71f298f
stop slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
---- Init ----
set @my_slave_net_timeout =@@global.slave_net_timeout;
---- Test ----
set global slave_net_timeout=100;
set global sql_slave_skip_counter=100;
show variables like 'slave_compressed_protocol';
...
...
@@ -16,4 +12,6 @@ slave_load_tmpdir SLAVE_LOAD_TMPDIR
show variables like 'slave_skip_errors';
Variable_name Value
slave_skip_errors 3,100,137,643,1752
---- Clean Up ----
set global slave_net_timeout=default;
set global sql_slave_skip_counter= 0;
mysql-test/suite/bugs/r/rpl_bug31583.result
View file @
a71f298f
...
...
@@ -13,3 +13,4 @@ a b
SELECT * FROM t1 ORDER BY a;
a b
3 -3
DROP TABLE t1;
mysql-test/suite/ndb/r/ndb_binlog_format.result
View file @
a71f298f
...
...
@@ -18,9 +18,7 @@ master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1,1), (1,2), (2
master-bin.000001 # Query # # use `test`; BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES (1,1), (1,2), (2,1), (2,2)
master-bin.000001 # Query # # use `test`; COMMIT
master-bin.000001 # Query # # use `test`; BEGIN
master-bin.000001 # Query # # use `test`; UPDATE t1, t2 SET m = 2, b = 3 WHERE n = c
master-bin.000001 # Query # # use `test`; COMMIT
master-bin.000001 # Query # # use `test`; BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES (1,1), (1,2), (2,1), (2,2)
master-bin.000001 # Query # # use `test`; UPDATE t1, t3 SET m = 2, e = 3 WHERE n = f
...
...
mysql-test/suite/rpl/r/rpl_bug33931.result
0 → 100644
View file @
a71f298f
reset master;
stop slave;
reset slave;
start slave;
show slave status;
Slave_IO_State #
Master_Host 127.0.0.1
Master_User root
Master_Port MASTER_PORT
Connect_Retry 1
Master_Log_File
Read_Master_Log_Pos 4
Relay_Log_File #
Relay_Log_Pos #
Relay_Master_Log_File
Slave_IO_Running No
Slave_SQL_Running No
Replicate_Do_DB
Replicate_Ignore_DB
Replicate_Do_Table
Replicate_Ignore_Table
Replicate_Wild_Do_Table
Replicate_Wild_Ignore_Table
Last_Errno 0
Last_Error
Skip_Counter 0
Exec_Master_Log_Pos 0
Relay_Log_Space #
Until_Condition None
Until_Log_File
Until_Log_Pos 0
Master_SSL_Allowed No
Master_SSL_CA_File
Master_SSL_CA_Path
Master_SSL_Cert
Master_SSL_Cipher
Master_SSL_Key
Seconds_Behind_Master #
Master_SSL_Verify_Server_Cert No
Last_IO_Errno 0
Last_IO_Error
Last_SQL_Errno 0
Last_SQL_Error
mysql-test/suite/rpl/t/rpl_bug33931-slave.opt
0 → 100644
View file @
a71f298f
--loose-debug=d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init
mysql-test/suite/rpl/t/rpl_bug33931.test
0 → 100644
View file @
a71f298f
# Test for
# Bug #33931 assertion at write_ignored_events_info_to_relay_log if init_slave_thread() fails
# Bug #33932 assertion at handle_slave_sql if init_slave_thread() fails
source
include
/
have_debug
.
inc
;
source
include
/
have_log_bin
.
inc
;
connect
(
master
,
127.0
.
0.1
,
root
,,
test
,
$MASTER_MYPORT
,);
connect
(
slave
,
127.0
.
0.1
,
root
,,
test
,
$SLAVE_MYPORT
,);
connection
master
;
reset
master
;
connection
slave
;
--
disable_warnings
stop
slave
;
--
enable_warnings
reset
slave
;
start
slave
;
connection
master
;
save_master_pos
;
connection
slave
;
#
# slave is going to stop because of emulated failures
# but there won't be any crashes nor asserts hit.
#
source
include
/
wait_for_slave_to_stop
.
inc
;
--
replace_result
$MASTER_MYPORT
MASTER_PORT
--
replace_column
1
# 8 # 9 # 23 # 33 #
query_vertical
show
slave
status
;
# no clean-up is needed
mysql-test/suite/rpl/t/rpl_variables-master.opt
deleted
100644 → 0
View file @
39c20516
--slave-skip-errors=3,100,137,643,1752
mysql-test/t/ctype_latin1_de.test
View file @
a71f298f
...
...
@@ -116,6 +116,7 @@ SELECT FIELD('ue',s1), FIELD('
DROP
TABLE
t1
;
--
source
include
/
ctype_filesort
.
inc
--
source
include
/
ctype_german
.
inc
#
# Bug#7878 with utf8_general_ci, equals (=) has problem with
...
...
mysql-test/t/ctype_uca.test
View file @
a71f298f
...
...
@@ -458,6 +458,7 @@ drop table t1;
SET
collation_connection
=
'utf8_unicode_ci'
;
--
source
include
/
ctype_filesort
.
inc
--
source
include
/
ctype_like_escape
.
inc
--
source
include
/
ctype_german
.
inc
# End of 4.1 tests
...
...
mysql-test/t/ctype_ucs.test
View file @
a71f298f
...
...
@@ -373,6 +373,7 @@ drop table t1;
SET
collation_connection
=
'ucs2_general_ci'
;
--
source
include
/
ctype_filesort
.
inc
--
source
include
/
ctype_like_escape
.
inc
--
source
include
/
ctype_german
.
inc
SET
NAMES
latin1
;
SET
collation_connection
=
'ucs2_bin'
;
--
source
include
/
ctype_filesort
.
inc
...
...
mysql-test/t/ctype_utf8.test
View file @
a71f298f
...
...
@@ -721,6 +721,7 @@ select hex(soundex(_utf8 0xD091D092D093));
SET
collation_connection
=
'utf8_general_ci'
;
--
source
include
/
ctype_filesort
.
inc
--
source
include
/
ctype_like_escape
.
inc
--
source
include
/
ctype_german
.
inc
SET
collation_connection
=
'utf8_bin'
;
--
source
include
/
ctype_filesort
.
inc
--
source
include
/
ctype_like_escape
.
inc
...
...
mysql-test/t/mysqldump.test
View file @
a71f298f
...
...
@@ -1613,6 +1613,10 @@ DROP TABLE t1;
#
# Added for use-thread option
#
# THIS PART OF THE TEST IS DISABLED UNTIL BUG#32991 IS FIXED
if
(
$bug32991_fixed
)
{
create
table
t1
(
a
text
,
b
text
);
create
table
t2
(
a
text
,
b
text
);
insert
t1
values
(
"Duck, Duck"
,
"goose"
);
...
...
@@ -1650,6 +1654,8 @@ drop table t2;
drop
table
words2
;
}
--
echo
#
--
echo
# BUG# 16853: mysqldump doesn't show events
--
echo
#
...
...
mysql-test/t/variables-notembedded-master.opt
0 → 100644
View file @
a71f298f
--loose-slave-skip-errors=3,100,137,643,1752
mysql-test/
suite/rpl/t/rpl_variables
.test
→
mysql-test/
t/variables-notembedded
.test
View file @
a71f298f
source
include
/
master
-
slave
.
inc
;
# Tests that variables work correctly (setting and showing). This
# test is like the main.variables test, but for variables not
# available in embedded mode.
# Init for rstore of variable values
source
include
/
not_embedded
.
inc
;
--
echo
----
Init
----
# Backup global variables so they can be restored at end of test.
set
@
my_slave_net_timeout
=@@
global
.
slave_net_timeout
;
--
echo
----
Test
----
set
global
slave_net_timeout
=
100
;
set
global
sql_slave_skip_counter
=
100
;
...
...
@@ -16,5 +22,9 @@ show variables like 'slave_load_tmpdir';
# that a list of values works correctly
show
variables
like
'slave_skip_errors'
;
# Cleanup
--
echo
----
Clean
Up
----
set
global
slave_net_timeout
=
default
;
# sql_slave_skip_counter is write-only, so we can't save previous
# value and restore it here. That's ok, because it's normally 0.
set
global
sql_slave_skip_counter
=
0
;
sql/handler.cc
View file @
a71f298f
...
...
@@ -3843,12 +3843,8 @@ bool ha_show_status(THD *thd, handlerton *db_type, enum ha_stat_type stat)
- table is not mysql.event
*/
/* The Sun compiler cannot instantiate the template below if this is
declared static, but it works by putting it into an anonymous
namespace. */
namespace
{
bool
check_table_binlog_row_based
(
THD
*
thd
,
TABLE
*
table
)
{
static
bool
check_table_binlog_row_based
(
THD
*
thd
,
TABLE
*
table
)
{
if
(
table
->
s
->
cached_row_logging_check
==
-
1
)
{
int
const
check
(
table
->
s
->
tmp_table
==
NO_TMP_TABLE
&&
...
...
@@ -3863,9 +3859,9 @@ namespace {
table
->
s
->
cached_row_logging_check
&&
(
thd
->
options
&
OPTION_BIN_LOG
)
&&
mysql_bin_log
.
is_open
());
}
}
/** @brief
Write table maps for all (manually or automatically) locked tables
to the binary log.
...
...
@@ -3888,10 +3884,9 @@ namespace {
THD::lock
THD::locked_tables
*/
namespace
static
int
write_locked_table_maps
(
THD
*
thd
)
{
int
write_locked_table_maps
(
THD
*
thd
)
{
DBUG_ENTER
(
"write_locked_table_maps"
);
DBUG_PRINT
(
"enter"
,
(
"thd: 0x%lx thd->lock: 0x%lx thd->locked_tables: 0x%lx "
"thd->extra_lock: 0x%lx"
,
...
...
@@ -3933,13 +3928,17 @@ namespace
}
}
DBUG_RETURN
(
0
);
}
}
template
<
class
RowsEventT
>
int
binlog_log_row
(
TABLE
*
table
,
typedef
bool
Log_func
(
THD
*
,
TABLE
*
,
bool
,
MY_BITMAP
*
,
uint
,
const
uchar
*
,
const
uchar
*
);
static
int
binlog_log_row
(
TABLE
*
table
,
const
uchar
*
before_record
,
const
uchar
*
after_record
)
{
const
uchar
*
after_record
,
Log_func
*
log_func
)
{
if
(
table
->
no_replicate
)
return
0
;
bool
error
=
0
;
...
...
@@ -3965,38 +3964,17 @@ namespace
{
bitmap_set_all
(
&
cols
);
if
(
likely
(
!
(
error
=
write_locked_table_maps
(
thd
))))
{
error
=
RowsEventT
::
binlog_row_logging_function
(
thd
,
table
,
table
->
file
->
has_transactions
(),
error
=
(
*
log_func
)(
thd
,
table
,
table
->
file
->
has_transactions
(),
&
cols
,
table
->
s
->
fields
,
before_record
,
after_record
);
}
before_record
,
after_record
);
if
(
!
use_bitbuf
)
bitmap_free
(
&
cols
);
}
}
return
error
?
HA_ERR_RBR_LOGGING_FAILED
:
0
;
}
/*
Instantiate the versions we need for the above template function,
because we have -fno-implicit-template as compiling option.
*/
template
int
binlog_log_row
<
Write_rows_log_event
>(
TABLE
*
,
const
uchar
*
,
const
uchar
*
);
template
int
binlog_log_row
<
Delete_rows_log_event
>(
TABLE
*
,
const
uchar
*
,
const
uchar
*
);
template
int
binlog_log_row
<
Update_rows_log_event
>(
TABLE
*
,
const
uchar
*
,
const
uchar
*
);
}
int
handler
::
ha_external_lock
(
THD
*
thd
,
int
lock_type
)
{
DBUG_ENTER
(
"handler::ha_external_lock"
);
...
...
@@ -4043,10 +4021,11 @@ int handler::ha_reset()
int
handler
::
ha_write_row
(
uchar
*
buf
)
{
int
error
;
Log_func
*
log_func
=
Write_rows_log_event
::
binlog_row_logging_function
;
DBUG_ENTER
(
"handler::ha_write_row"
);
if
(
unlikely
(
error
=
write_row
(
buf
)))
DBUG_RETURN
(
error
);
if
(
unlikely
(
error
=
binlog_log_row
<
Write_rows_log_event
>
(
table
,
0
,
buf
)))
if
(
unlikely
(
error
=
binlog_log_row
(
table
,
0
,
buf
,
log_func
)))
DBUG_RETURN
(
error
);
/* purecov: inspected */
DBUG_RETURN
(
0
);
}
...
...
@@ -4055,6 +4034,7 @@ int handler::ha_write_row(uchar *buf)
int
handler
::
ha_update_row
(
const
uchar
*
old_data
,
uchar
*
new_data
)
{
int
error
;
Log_func
*
log_func
=
Update_rows_log_event
::
binlog_row_logging_function
;
/*
Some storage engines require that the new record is in record[0]
...
...
@@ -4064,7 +4044,7 @@ int handler::ha_update_row(const uchar *old_data, uchar *new_data)
if
(
unlikely
(
error
=
update_row
(
old_data
,
new_data
)))
return
error
;
if
(
unlikely
(
error
=
binlog_log_row
<
Update_rows_log_event
>
(
table
,
old_data
,
new_data
)))
if
(
unlikely
(
error
=
binlog_log_row
(
table
,
old_data
,
new_data
,
log_func
)))
return
error
;
return
0
;
}
...
...
@@ -4072,9 +4052,10 @@ int handler::ha_update_row(const uchar *old_data, uchar *new_data)
int
handler
::
ha_delete_row
(
const
uchar
*
buf
)
{
int
error
;
Log_func
*
log_func
=
Delete_rows_log_event
::
binlog_row_logging_function
;
if
(
unlikely
(
error
=
delete_row
(
buf
)))
return
error
;
if
(
unlikely
(
error
=
binlog_log_row
<
Delete_rows_log_event
>
(
table
,
buf
,
0
)))
if
(
unlikely
(
error
=
binlog_log_row
(
table
,
buf
,
0
,
log_func
)))
return
error
;
return
0
;
}
...
...
sql/log.cc
View file @
a71f298f
...
...
@@ -3403,35 +3403,6 @@ void THD::binlog_set_stmt_begin() {
trx_data
->
before_stmt_pos
=
pos
;
}
int
THD
::
binlog_flush_transaction_cache
()
{
DBUG_ENTER
(
"binlog_flush_transaction_cache"
);
binlog_trx_data
*
trx_data
=
(
binlog_trx_data
*
)
thd_get_ha_data
(
this
,
binlog_hton
);
DBUG_PRINT
(
"enter"
,
(
"trx_data=0x%lu"
,
(
ulong
)
trx_data
));
if
(
trx_data
)
DBUG_PRINT
(
"enter"
,
(
"trx_data->before_stmt_pos=%lu"
,
(
ulong
)
trx_data
->
before_stmt_pos
));
/*
Write the transaction cache to the binary log. We don't flush and
sync the log file since we don't know if more will be written to
it. If the caller want the log file sync:ed, the caller has to do
it.
The transaction data is only reset upon a successful write of the
cache to the binary log.
*/
if
(
trx_data
&&
likely
(
mysql_bin_log
.
is_open
()))
{
if
(
int
error
=
mysql_bin_log
.
write_cache
(
&
trx_data
->
trans_log
,
true
,
true
))
DBUG_RETURN
(
error
);
trx_data
->
reset
();
}
DBUG_RETURN
(
0
);
}
/*
Write a table map to the binary log.
...
...
sql/log_event.h
View file @
a71f298f
...
...
@@ -670,18 +670,18 @@ typedef struct st_print_event_info
Any @c Log_event saved on disk consists of the following three
components.
*
Common-Header
*
Post-Header
*
Body
-
Common-Header
-
Post-Header
-
Body
The Common-Header, documented in the table @ref Table_common_header
"below", always has the same form and length within one version of
MySQL. Each event type specifies a form and length of the
Post-Header
common to all events of the type. The Body may be of
different form and length even for different events of the same
type. The binary formats of Post-Header and Body are documented
separately in each subclass. The binary format of Common-Header is
as follows.
MySQL. Each event type specifies a form
at
and length of the
Post-Header
. The length of the Common-Header is the same for all
events of the same type. The Body may be of different format and
length even for different events of the same type. The binary
formats of Post-Header and Body are documented separately in each
subclass. The binary format of Common-Header is
as follows.
<table>
<caption>Common-Header</caption>
...
...
@@ -750,8 +750,8 @@ typedef struct st_print_event_info
- Some events use a special format for efficient representation of
unsigned integers, called Packed Integer. A Packed Integer has the
capacity of storing up to 8-byte integers, while small integers
still can use 1, 3, or 4 bytes. The
first byte indicates how many
bytes are used by the integ
er, according to the following table:
still can use 1, 3, or 4 bytes. The
value of the first byte
determines how to read the numb
er, according to the following table:
<table>
<caption>Format of Packed Integer</caption>
...
...
@@ -763,7 +763,7 @@ typedef struct st_print_event_info
<tr>
<td>0-250</td>
<td>The first byte is the number (in range 0-250), and no more
<td>The first byte is the number (in
the
range 0-250), and no more
bytes are used.</td>
</tr>
...
...
@@ -1174,6 +1174,10 @@ protected:
@section Query_log_event_binary_format Binary format
See @ref Log_event_binary_format "Binary format for log events" for
a general discussion and introduction to the binary format of binlog
events.
The Post-Header has five components:
<table>
...
...
@@ -1407,7 +1411,7 @@ protected:
query "SELECT id, character_set_name, collation_name FROM
COLLATIONS".
Cf. Q_CHARSET_DATABASE_
NUMBER
below.
Cf. Q_CHARSET_DATABASE_
CODE
below.
This field is always written.
</td>
...
...
@@ -1442,7 +1446,7 @@ protected:
<tr>
<td>charset_database_number</td>
<td>Q_CHARSET_DATABASE_
NUMBER
== 8</td>
<td>Q_CHARSET_DATABASE_
CODE
== 8</td>
<td>2 byte integer</td>
<td>The value of the collation_database system variable (in the
...
...
@@ -1457,11 +1461,11 @@ protected:
In newer versions, "CREATE TABLE" has been changed to take the
character set from the database of the created table, rather than
the
database of the current database. This makes a difference
when creating a table in another database than the current one.
"LOAD DATA INFILE" has not yet changed to do this, but there are
plans to eventually do it, and to make collation_databas
e
read-only.
the
character set of the current database. This makes a
difference when creating a table in another database than the
current one. "LOAD DATA INFILE" has not yet changed to do this,
but there are plans to eventually do it, and to mak
e
collation_database
read-only.
This field is written if it is not 0.
</td>
...
...
@@ -1480,7 +1484,7 @@ protected:
Q_CATALOG_CODE will never be written by a new master, but can still
be understood by a new slave.
* See Q_CHARSET_DATABASE_
NUMBER
in the table above.
* See Q_CHARSET_DATABASE_
CODE
in the table above.
*/
class
Query_log_event
:
public
Log_event
...
...
@@ -1919,6 +1923,8 @@ private:
@subsection Load_log_event_notes_on_previous_versions Notes on Previous Versions
This event type is understood by current versions, but only
generated by MySQL 3.23 and earlier.
*/
class
Load_log_event
:
public
Log_event
{
...
...
sql/slave.cc
View file @
a71f298f
...
...
@@ -1507,6 +1507,9 @@ void set_slave_thread_default_charset(THD* thd, Relay_log_info const *rli)
static
int
init_slave_thread
(
THD
*
thd
,
SLAVE_THD_TYPE
thd_type
)
{
DBUG_ENTER
(
"init_slave_thread"
);
#if !defined(DBUG_OFF)
int
simulate_error
=
0
;
#endif
thd
->
system_thread
=
(
thd_type
==
SLAVE_THD_SQL
)
?
SYSTEM_THREAD_SLAVE_SQL
:
SYSTEM_THREAD_SLAVE_IO
;
thd
->
security_ctx
->
skip_grants
();
...
...
@@ -1526,10 +1529,17 @@ static int init_slave_thread(THD* thd, SLAVE_THD_TYPE thd_type)
thd
->
thread_id
=
thd
->
variables
.
pseudo_thread_id
=
thread_id
++
;
pthread_mutex_unlock
(
&
LOCK_thread_count
);
DBUG_EXECUTE_IF
(
"simulate_io_slave_error_on_init"
,
simulate_error
|=
(
1
<<
SLAVE_THD_IO
););
DBUG_EXECUTE_IF
(
"simulate_sql_slave_error_on_init"
,
simulate_error
|=
(
1
<<
SLAVE_THD_SQL
););
#if !defined(DBUG_OFF)
if
(
init_thr_lock
()
||
thd
->
store_globals
()
||
simulate_error
&
(
1
<<
thd_type
))
#else
if
(
init_thr_lock
()
||
thd
->
store_globals
())
#endif
{
thd
->
cleanup
();
delete
thd
;
DBUG_RETURN
(
-
1
);
}
lex_start
(
thd
);
...
...
@@ -2229,6 +2239,7 @@ pthread_handler_t handle_slave_io(void *arg)
thd
=
new
THD
;
// note that contructor of THD uses DBUG_ !
THD_CHECK_SENTRY
(
thd
);
mi
->
io_thd
=
thd
;
pthread_detach_this_thread
();
thd
->
thread_stack
=
(
char
*
)
&
thd
;
// remember where our stack is
...
...
@@ -2239,7 +2250,6 @@ pthread_handler_t handle_slave_io(void *arg)
sql_print_error
(
"Failed during slave I/O thread initialization"
);
goto
err
;
}
mi
->
io_thd
=
thd
;
pthread_mutex_lock
(
&
LOCK_thread_count
);
threads
.
append
(
thd
);
pthread_mutex_unlock
(
&
LOCK_thread_count
);
...
...
@@ -2530,9 +2540,11 @@ pthread_handler_t handle_slave_sql(void *arg)
thd
=
new
THD
;
// note that contructor of THD uses DBUG_ !
thd
->
thread_stack
=
(
char
*
)
&
thd
;
// remember where our stack is
rli
->
sql_thd
=
thd
;
/* Inform waiting threads that slave has started */
rli
->
slave_run_id
++
;
rli
->
slave_running
=
1
;
pthread_detach_this_thread
();
if
(
init_slave_thread
(
thd
,
SLAVE_THD_SQL
))
...
...
@@ -2547,7 +2559,6 @@ pthread_handler_t handle_slave_sql(void *arg)
goto
err
;
}
thd
->
init_for_queries
();
rli
->
sql_thd
=
thd
;
thd
->
temporary_tables
=
rli
->
save_temporary_tables
;
// restore temp tables
pthread_mutex_lock
(
&
LOCK_thread_count
);
threads
.
append
(
thd
);
...
...
@@ -2560,7 +2571,6 @@ pthread_handler_t handle_slave_sql(void *arg)
start receiving data so we realize we are not caught up and
Seconds_Behind_Master grows. No big deal.
*/
rli
->
slave_running
=
1
;
rli
->
abort_slave
=
0
;
pthread_mutex_unlock
(
&
rli
->
run_lock
);
pthread_cond_broadcast
(
&
rli
->
start_cond
);
...
...
sql/sql_class.h
View file @
a71f298f
...
...
@@ -1243,7 +1243,6 @@ public:
Public interface to write RBR events to the binlog
*/
void
binlog_start_trans_and_stmt
();
int
binlog_flush_transaction_cache
();
void
binlog_set_stmt_begin
();
int
binlog_write_table_map
(
TABLE
*
table
,
bool
is_transactional
);
int
binlog_write_row
(
TABLE
*
table
,
bool
is_transactional
,
...
...
sql/sql_delete.cc
View file @
a71f298f
...
...
@@ -780,8 +780,6 @@ void multi_delete::abort()
}
thd
->
transaction
.
all
.
modified_non_trans_table
=
true
;
}
DBUG_ASSERT
(
!
normal_tables
||
!
deleted
||
thd
->
transaction
.
stmt
.
modified_non_trans_table
);
DBUG_VOID_RETURN
;
}
...
...
@@ -899,8 +897,6 @@ bool multi_delete::send_eof()
{
query_cache_invalidate3
(
thd
,
delete_tables
,
1
);
}
DBUG_ASSERT
(
!
normal_tables
||
!
deleted
||
thd
->
transaction
.
stmt
.
modified_non_trans_table
);
if
((
local_error
==
0
)
||
thd
->
transaction
.
stmt
.
modified_non_trans_table
)
{
if
(
mysql_bin_log
.
is_open
())
...
...
sql/sql_update.cc
View file @
a71f298f
...
...
@@ -1203,7 +1203,7 @@ multi_update::multi_update(TABLE_LIST *table_list,
tmp_tables
(
0
),
updated
(
0
),
found
(
0
),
fields
(
field_list
),
values
(
value_list
),
table_count
(
0
),
copy_field
(
0
),
handle_duplicates
(
handle_duplicates_arg
),
do_update
(
1
),
trans_safe
(
1
),
transactional_tables
(
1
),
ignore
(
ignore_arg
),
error_handled
(
0
)
transactional_tables
(
0
),
ignore
(
ignore_arg
),
error_handled
(
0
)
{}
...
...
@@ -1718,7 +1718,7 @@ void multi_update::abort()
if
(
trans_safe
)
{
DBUG_ASSERT
(
transactional_tables
);
DBUG_ASSERT
(
!
updated
||
transactional_tables
);
(
void
)
ha_autocommit_or_rollback
(
thd
,
1
);
}
else
...
...
strings/ctype-utf8.c
View file @
a71f298f
...
...
@@ -155,7 +155,7 @@ static MY_UNICASE_INFO plane00[]={
{
0x00D8
,
0x00F8
,
0x00D8
},
{
0x00D9
,
0x00F9
,
0x0055
},
{
0x00DA
,
0x00FA
,
0x0055
},
{
0x00DB
,
0x00FB
,
0x0055
},
{
0x00DC
,
0x00FC
,
0x0055
},
{
0x00DD
,
0x00FD
,
0x0059
},
{
0x00DE
,
0x00FE
,
0x00DE
},
{
0x00DF
,
0x00DF
,
0x00
DF
},
{
0x00DE
,
0x00FE
,
0x00DE
},
{
0x00DF
,
0x00DF
,
0x00
53
},
{
0x00C0
,
0x00E0
,
0x0041
},
{
0x00C1
,
0x00E1
,
0x0041
},
{
0x00C2
,
0x00E2
,
0x0041
},
{
0x00C3
,
0x00E3
,
0x0041
},
{
0x00C4
,
0x00E4
,
0x0041
},
{
0x00C5
,
0x00E5
,
0x0041
},
...
...
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