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
e8e74a73
Commit
e8e74a73
authored
Feb 19, 2008
by
mkindahl@dl145h.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge dl145h.mysql.com:/data0/mkindahl/mysql-5.1-rpl-merge
into dl145h.mysql.com:/data0/mkindahl/mysql-5.1-rpl
parents
a1a94e23
446c3768
Changes
27
Hide whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
406 additions
and
315 deletions
+406
-315
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/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/rpl_bug33931.result
mysql-test/r/rpl_bug33931.result
+43
-0
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/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/rpl_bug33931-slave.opt
mysql-test/t/rpl_bug33931-slave.opt
+1
-0
mysql-test/t/rpl_bug33931.test
mysql-test/t/rpl_bug33931.test
+37
-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/slave.cc
sql/slave.cc
+15
-5
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 @
e8e74a73
...
...
@@ -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 @
e8e74a73
#
# 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/r/ctype_latin1_de.result
View file @
e8e74a73
...
...
@@ -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 @
e8e74a73
...
...
@@ -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 @
e8e74a73
...
...
@@ -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 @
e8e74a73
...
...
@@ -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 @
e8e74a73
...
...
@@ -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 @
e8e74a73
...
...
@@ -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/r/rpl_bug33931.result
0 → 100644
View file @
e8e74a73
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/r/rpl_variables
.result
→
mysql-test/
r/variables-notembedded
.result
View file @
e8e74a73
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 @
e8e74a73
...
...
@@ -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 @
e8e74a73
...
...
@@ -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/t/rpl_variables-master.opt
deleted
100644 → 0
View file @
a1a94e23
--slave-skip-errors=3,100,137,643,1752
mysql-test/t/ctype_latin1_de.test
View file @
e8e74a73
...
...
@@ -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 @
e8e74a73
...
...
@@ -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 @
e8e74a73
...
...
@@ -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 @
e8e74a73
...
...
@@ -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 @
e8e74a73
...
...
@@ -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/rpl_bug33931-slave.opt
0 → 100644
View file @
e8e74a73
--loose-debug=d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init
mysql-test/t/rpl_bug33931.test
0 → 100644
View file @
e8e74a73
# 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/t/variables-notembedded-master.opt
0 → 100644
View file @
e8e74a73
--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 @
e8e74a73
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 @
e8e74a73
...
...
@@ -3843,29 +3843,25 @@ 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
)
{
if
(
table
->
s
->
cached_row_logging_check
==
-
1
)
{
int
const
check
(
table
->
s
->
tmp_table
==
NO_TMP_TABLE
&&
binlog_filter
->
db_ok
(
table
->
s
->
db
.
str
));
table
->
s
->
cached_row_logging_check
=
check
;
}
int
const
check
(
table
->
s
->
tmp_table
==
NO_TMP_TABLE
&&
binlog_filter
->
db_ok
(
table
->
s
->
db
.
str
));
table
->
s
->
cached_row_logging_check
=
check
;
}
DBUG_ASSERT
(
table
->
s
->
cached_row_logging_check
==
0
||
table
->
s
->
cached_row_logging_check
==
1
);
DBUG_ASSERT
(
table
->
s
->
cached_row_logging_check
==
0
||
table
->
s
->
cached_row_logging_check
==
1
);
return
(
thd
->
current_stmt_binlog_row_based
&&
table
->
s
->
cached_row_logging_check
&&
(
thd
->
options
&
OPTION_BIN_LOG
)
&&
mysql_bin_log
.
is_open
());
}
return
(
thd
->
current_stmt_binlog_row_based
&&
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.
...
...
@@ -3879,7 +3875,7 @@ namespace {
that are locked by the thread 'thd'. Either manually locked
(stored in THD::locked_tables) and automatically locked (stored
in THD::lock) are considered.
RETURN VALUE
0 All OK
1 Failed to write all table maps
...
...
@@ -3888,115 +3884,97 @@ 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"
,
(
long
)
thd
,
(
long
)
thd
->
lock
,
(
long
)
thd
->
locked_tables
,
(
long
)
thd
->
extra_lock
));
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"
,
(
long
)
thd
,
(
long
)
thd
->
lock
,
(
long
)
thd
->
locked_tables
,
(
long
)
thd
->
extra_lock
));
if
(
thd
->
get_binlog_table_maps
()
==
0
)
if
(
thd
->
get_binlog_table_maps
()
==
0
)
{
MYSQL_LOCK
*
locks
[
3
];
locks
[
0
]
=
thd
->
extra_lock
;
locks
[
1
]
=
thd
->
lock
;
locks
[
2
]
=
thd
->
locked_tables
;
for
(
uint
i
=
0
;
i
<
sizeof
(
locks
)
/
sizeof
(
*
locks
)
;
++
i
)
{
MYSQL_LOCK
*
locks
[
3
];
locks
[
0
]
=
thd
->
extra_lock
;
locks
[
1
]
=
thd
->
lock
;
locks
[
2
]
=
thd
->
locked_tables
;
for
(
uint
i
=
0
;
i
<
sizeof
(
locks
)
/
sizeof
(
*
locks
)
;
++
i
)
MYSQL_LOCK
const
*
const
lock
=
locks
[
i
];
if
(
lock
==
NULL
)
continue
;
TABLE
**
const
end_ptr
=
lock
->
table
+
lock
->
table_count
;
for
(
TABLE
**
table_ptr
=
lock
->
table
;
table_ptr
!=
end_ptr
;
++
table_ptr
)
{
MYSQL_LOCK
const
*
const
lock
=
locks
[
i
];
if
(
lock
==
NULL
)
continue
;
TABLE
**
const
end_ptr
=
lock
->
table
+
lock
->
table_count
;
for
(
TABLE
**
table_ptr
=
lock
->
table
;
table_ptr
!=
end_ptr
;
++
table_ptr
)
TABLE
*
const
table
=
*
table_ptr
;
DBUG_PRINT
(
"info"
,
(
"Checking table %s"
,
table
->
s
->
table_name
.
str
));
if
(
table
->
current_lock
==
F_WRLCK
&&
check_table_binlog_row_based
(
thd
,
table
))
{
TABLE
*
const
table
=
*
table_ptr
;
DBUG_PRINT
(
"info"
,
(
"Checking table %s"
,
table
->
s
->
table_name
.
str
));
if
(
table
->
current_lock
==
F_WRLCK
&&
check_table_binlog_row_based
(
thd
,
table
))
{
int
const
has_trans
=
table
->
file
->
has_transactions
();
int
const
error
=
thd
->
binlog_write_table_map
(
table
,
has_trans
);
/*
If an error occurs, it is the responsibility of the caller to
roll back the transaction.
*/
if
(
unlikely
(
error
))
DBUG_RETURN
(
1
);
}
int
const
has_trans
=
table
->
file
->
has_transactions
();
int
const
error
=
thd
->
binlog_write_table_map
(
table
,
has_trans
);
/*
If an error occurs, it is the responsibility of the caller to
roll back the transaction.
*/
if
(
unlikely
(
error
))
DBUG_RETURN
(
1
);
}
}
}
DBUG_RETURN
(
0
);
}
DBUG_RETURN
(
0
);
}
template
<
class
RowsEventT
>
int
binlog_log_row
(
TABLE
*
table
,
const
uchar
*
before_record
,
const
uchar
*
after_record
)
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
,
Log_func
*
log_func
)
{
if
(
table
->
no_replicate
)
return
0
;
bool
error
=
0
;
THD
*
const
thd
=
table
->
in_use
;
if
(
check_table_binlog_row_based
(
thd
,
table
))
{
if
(
table
->
no_replicate
)
return
0
;
bool
error
=
0
;
THD
*
const
thd
=
table
->
in_use
;
MY_BITMAP
cols
;
/* Potential buffer on the stack for the bitmap */
uint32
bitbuf
[
BITMAP_STACKBUF_SIZE
/
sizeof
(
uint32
)];
uint
n_fields
=
table
->
s
->
fields
;
my_bool
use_bitbuf
=
n_fields
<=
sizeof
(
bitbuf
)
*
8
;
if
(
check_table_binlog_row_based
(
thd
,
table
))
/*
If there are no table maps written to the binary log, this is
the first row handled in this statement. In that case, we need
to write table maps for all locked tables to the binary log.
*/
if
(
likely
(
!
(
error
=
bitmap_init
(
&
cols
,
use_bitbuf
?
bitbuf
:
NULL
,
(
n_fields
+
7
)
&
~
7UL
,
FALSE
))))
{
MY_BITMAP
cols
;
/* Potential buffer on the stack for the bitmap */
uint32
bitbuf
[
BITMAP_STACKBUF_SIZE
/
sizeof
(
uint32
)];
uint
n_fields
=
table
->
s
->
fields
;
my_bool
use_bitbuf
=
n_fields
<=
sizeof
(
bitbuf
)
*
8
;
/*
If there are no table maps written to the binary log, this is
the first row handled in this statement. In that case, we need
to write table maps for all locked tables to the binary log.
*/
if
(
likely
(
!
(
error
=
bitmap_init
(
&
cols
,
use_bitbuf
?
bitbuf
:
NULL
,
(
n_fields
+
7
)
&
~
7UL
,
FALSE
))))
{
bitmap_set_all
(
&
cols
);
if
(
likely
(
!
(
error
=
write_locked_table_maps
(
thd
))))
{
error
=
RowsEventT
::
binlog_row_logging_function
(
thd
,
table
,
table
->
file
->
has_transactions
(),
&
cols
,
table
->
s
->
fields
,
before_record
,
after_record
);
}
if
(
!
use_bitbuf
)
bitmap_free
(
&
cols
);
}
bitmap_set_all
(
&
cols
);
if
(
likely
(
!
(
error
=
write_locked_table_maps
(
thd
))))
error
=
(
*
log_func
)(
thd
,
table
,
table
->
file
->
has_transactions
(),
&
cols
,
table
->
s
->
fields
,
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
*
);
return
error
?
HA_ERR_RBR_LOGGING_FAILED
:
0
;
}
int
handler
::
ha_external_lock
(
THD
*
thd
,
int
lock_type
)
{
DBUG_ENTER
(
"handler::ha_external_lock"
);
...
...
@@ -4041,10 +4019,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
);
}
...
...
@@ -4053,6 +4032,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]
...
...
@@ -4062,7 +4042,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
;
}
...
...
@@ -4070,9 +4050,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/slave.cc
View file @
e8e74a73
...
...
@@ -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_delete.cc
View file @
e8e74a73
...
...
@@ -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 @
e8e74a73
...
...
@@ -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 @
e8e74a73
...
...
@@ -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