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
959b8810
Commit
959b8810
authored
Feb 26, 2007
by
mats@romeo.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merge romeo.(none):/home/bkroot/mysql-5.1-new-rpl
into romeo.(none):/home/bk/b25091-mysql-5.1-new-rpl
parents
5397cc85
988ae560
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
125 additions
and
1 deletion
+125
-1
mysql-test/extra/binlog_tests/binlog.test
mysql-test/extra/binlog_tests/binlog.test
+13
-0
mysql-test/r/binlog_row_binlog.result
mysql-test/r/binlog_row_binlog.result
+17
-0
mysql-test/r/binlog_stm_binlog.result
mysql-test/r/binlog_stm_binlog.result
+11
-0
sql/handler.cc
sql/handler.cc
+1
-1
sql/log.cc
sql/log.cc
+1
-0
sql/sp.cc
sql/sp.cc
+21
-0
sql/sql_acl.cc
sql/sql_acl.cc
+56
-0
sql/table.h
sql/table.h
+5
-0
No files found.
mysql-test/extra/binlog_tests/binlog.test
View file @
959b8810
...
...
@@ -67,6 +67,19 @@ create table if not exists t2 select * from t1;
create
temporary
table
tt1
(
a
int
);
create
table
if
not
exists
t3
like
tt1
;
# BUG#25091 (A DELETE statement to mysql database is not logged with
# ROW mode format): Checking that some basic operations on tables in
# the mysql database is replicated even when the current database is
# 'mysql'.
--
disable_warnings
USE
mysql
;
INSERT
INTO
user
SET
host
=
'localhost'
,
user
=
'@#@'
,
password
=
password
(
'Just a test'
);
UPDATE
user
SET
password
=
password
(
'Another password'
)
WHERE
host
=
'localhost'
AND
user
=
'@#@'
;
DELETE
FROM
user
WHERE
host
=
'localhost'
AND
user
=
'@#@'
;
--
enable_warnings
use
test
;
--
replace_column
2
# 5 #
--
replace_regex
/
table_id
:
[
0
-
9
]
+/
table_id
:
#/ /\/\* xid=.* \*\//\/* xid= *\//
show
binlog
events
from
102
;
...
...
mysql-test/r/binlog_row_binlog.result
View file @
959b8810
...
...
@@ -249,6 +249,11 @@ create table t1 (a int);
create table if not exists t2 select * from t1;
create temporary table tt1 (a int);
create table if not exists t3 like tt1;
USE mysql;
INSERT INTO user SET host='localhost', user='@#@', password=password('Just a test');
UPDATE user SET password=password('Another password') WHERE host='localhost' AND user='@#@';
DELETE FROM user WHERE host='localhost' AND user='@#@';
use test;
show binlog events from 102;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query 1 # use `test`; create table t1 (id tinyint auto_increment primary key)
...
...
@@ -262,6 +267,12 @@ master-bin.000001 # Query 1 # use `test`; CREATE TABLE IF NOT EXISTS `t2` (
master-bin.000001 # Query 1 # use `test`; CREATE TABLE IF NOT EXISTS `t3` (
`a` int(11) DEFAULT NULL
)
master-bin.000001 # Table_map 1 # table_id: # (mysql.user)
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map 1 # table_id: # (mysql.user)
master-bin.000001 # Update_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map 1 # table_id: # (mysql.user)
master-bin.000001 # Delete_rows 1 # table_id: # flags: STMT_END_F
drop table t1,t2,t3,tt1;
create table t1 (a int not null auto_increment, primary key (a)) engine=myisam;
set @@session.auto_increment_increment=1, @@session.auto_increment_offset=1;
...
...
@@ -281,6 +292,12 @@ master-bin.000001 # Query 1 # use `test`; CREATE TABLE IF NOT EXISTS `t2` (
master-bin.000001 # Query 1 # use `test`; CREATE TABLE IF NOT EXISTS `t3` (
`a` int(11) DEFAULT NULL
)
master-bin.000001 # Table_map 1 # table_id: # (mysql.user)
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map 1 # table_id: # (mysql.user)
master-bin.000001 # Update_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map 1 # table_id: # (mysql.user)
master-bin.000001 # Delete_rows 1 # table_id: # flags: STMT_END_F
master-bin.000001 # Query 1 # use `test`; DROP TABLE `t1`,`t2`,`t3` /* generated by server */
master-bin.000001 # Query 1 # use `test`; create table t1 (a int not null auto_increment, primary key (a)) engine=myisam
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
...
...
mysql-test/r/binlog_stm_binlog.result
View file @
959b8810
...
...
@@ -159,6 +159,11 @@ create table t1 (a int);
create table if not exists t2 select * from t1;
create temporary table tt1 (a int);
create table if not exists t3 like tt1;
USE mysql;
INSERT INTO user SET host='localhost', user='@#@', password=password('Just a test');
UPDATE user SET password=password('Another password') WHERE host='localhost' AND user='@#@';
DELETE FROM user WHERE host='localhost' AND user='@#@';
use test;
show binlog events from 102;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query 1 # use `test`; create table t1 (id tinyint auto_increment primary key)
...
...
@@ -169,6 +174,9 @@ master-bin.000001 # Query 1 # use `test`; create table t1 (a int)
master-bin.000001 # Query 1 # use `test`; create table if not exists t2 select * from t1
master-bin.000001 # Query 1 # use `test`; create temporary table tt1 (a int)
master-bin.000001 # Query 1 # use `test`; create table if not exists t3 like tt1
master-bin.000001 # Query 1 # use `mysql`; INSERT INTO user SET host='localhost', user='@#@', password=password('Just a test')
master-bin.000001 # Query 1 # use `mysql`; UPDATE user SET password=password('Another password') WHERE host='localhost' AND user='@#@'
master-bin.000001 # Query 1 # use `mysql`; DELETE FROM user WHERE host='localhost' AND user='@#@'
drop table t1,t2,t3,tt1;
create table t1 (a int not null auto_increment, primary key (a)) engine=myisam;
set @@session.auto_increment_increment=1, @@session.auto_increment_offset=1;
...
...
@@ -185,6 +193,9 @@ master-bin.000001 # Query 1 # use `test`; create table t1 (a int)
master-bin.000001 # Query 1 # use `test`; create table if not exists t2 select * from t1
master-bin.000001 # Query 1 # use `test`; create temporary table tt1 (a int)
master-bin.000001 # Query 1 # use `test`; create table if not exists t3 like tt1
master-bin.000001 # Query 1 # use `mysql`; INSERT INTO user SET host='localhost', user='@#@', password=password('Just a test')
master-bin.000001 # Query 1 # use `mysql`; UPDATE user SET password=password('Another password') WHERE host='localhost' AND user='@#@'
master-bin.000001 # Query 1 # use `mysql`; DELETE FROM user WHERE host='localhost' AND user='@#@'
master-bin.000001 # Query 1 # use `test`; drop table t1,t2,t3,tt1
master-bin.000001 # Query 1 # use `test`; create table t1 (a int not null auto_increment, primary key (a)) engine=myisam
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
...
...
sql/handler.cc
View file @
959b8810
...
...
@@ -3456,7 +3456,7 @@ namespace {
{
int
const
check
(
table
->
s
->
tmp_table
==
NO_TMP_TABLE
&&
binlog_filter
->
db_ok
(
table
->
s
->
db
.
str
)
&&
strcmp
(
"mysql"
,
table
->
s
->
db
.
str
)
!=
0
);
!
table
->
no_replicate
);
table
->
s
->
cached_row_logging_check
=
check
;
}
...
...
sql/log.cc
View file @
959b8810
...
...
@@ -303,6 +303,7 @@ bool Log_to_csv_event_handler::open_log_table(uint log_table_type)
{
table
->
table
->
use_all_columns
();
table
->
table
->
locked_by_logger
=
TRUE
;
table
->
table
->
no_replicate
=
TRUE
;
}
/* restore thread settings */
if
(
curr
)
...
...
sql/sp.cc
View file @
959b8810
...
...
@@ -498,6 +498,13 @@ db_create_routine(THD *thd, int type, sp_head *sp)
DBUG_PRINT
(
"enter"
,
(
"type: %d name: %.*s"
,
type
,
sp
->
m_name
.
length
,
sp
->
m_name
.
str
));
/*
This statement will be replicated as a statement, even when using
row-based replication. The flag will be reset at the end of the
statement.
*/
thd
->
clear_current_stmt_binlog_row_based
();
if
(
!
(
table
=
open_proc_table_for_update
(
thd
)))
ret
=
SP_OPEN_TABLE_FAILED
;
else
...
...
@@ -634,6 +641,13 @@ db_drop_routine(THD *thd, int type, sp_name *name)
DBUG_PRINT
(
"enter"
,
(
"type: %d name: %.*s"
,
type
,
name
->
m_name
.
length
,
name
->
m_name
.
str
));
/*
This statement will be replicated as a statement, even when using
row-based replication. The flag will be reset at the end of the
statement.
*/
thd
->
clear_current_stmt_binlog_row_based
();
if
(
!
(
table
=
open_proc_table_for_update
(
thd
)))
DBUG_RETURN
(
SP_OPEN_TABLE_FAILED
);
if
((
ret
=
db_find_routine_aux
(
thd
,
type
,
name
,
table
))
==
SP_OK
)
...
...
@@ -666,6 +680,13 @@ db_update_routine(THD *thd, int type, sp_name *name, st_sp_chistics *chistics)
DBUG_PRINT
(
"enter"
,
(
"type: %d name: %.*s"
,
type
,
name
->
m_name
.
length
,
name
->
m_name
.
str
));
/*
This statement will be replicated as a statement, even when using
row-based replication. The flag will be reset at the end of the
statement.
*/
thd
->
clear_current_stmt_binlog_row_based
();
if
(
!
(
table
=
open_proc_table_for_update
(
thd
)))
DBUG_RETURN
(
SP_OPEN_TABLE_FAILED
);
if
((
ret
=
db_find_routine_aux
(
thd
,
type
,
name
,
table
))
==
SP_OK
)
...
...
sql/sql_acl.cc
View file @
959b8810
...
...
@@ -3001,6 +3001,13 @@ bool mysql_table_grant(THD *thd, TABLE_LIST *table_list,
tables
[
0
].
lock_type
=
tables
[
1
].
lock_type
=
tables
[
2
].
lock_type
=
TL_WRITE
;
tables
[
0
].
db
=
tables
[
1
].
db
=
tables
[
2
].
db
=
(
char
*
)
"mysql"
;
/*
This statement will be replicated as a statement, even when using
row-based replication. The flag will be reset at the end of the
statement.
*/
thd
->
clear_current_stmt_binlog_row_based
();
#ifdef HAVE_REPLICATION
/*
GRANT and REVOKE are applied the slave in/exclusion rules as they are
...
...
@@ -3218,6 +3225,13 @@ bool mysql_routine_grant(THD *thd, TABLE_LIST *table_list, bool is_proc,
tables
[
0
].
lock_type
=
tables
[
1
].
lock_type
=
TL_WRITE
;
tables
[
0
].
db
=
tables
[
1
].
db
=
(
char
*
)
"mysql"
;
/*
This statement will be replicated as a statement, even when using
row-based replication. The flag will be reset at the end of the
statement.
*/
thd
->
clear_current_stmt_binlog_row_based
();
#ifdef HAVE_REPLICATION
/*
GRANT and REVOKE are applied the slave in/exclusion rules as they are
...
...
@@ -3357,6 +3371,13 @@ bool mysql_grant(THD *thd, const char *db, List <LEX_USER> &list,
tables
[
0
].
lock_type
=
tables
[
1
].
lock_type
=
TL_WRITE
;
tables
[
0
].
db
=
tables
[
1
].
db
=
(
char
*
)
"mysql"
;
/*
This statement will be replicated as a statement, even when using
row-based replication. The flag will be reset at the end of the
statement.
*/
thd
->
clear_current_stmt_binlog_row_based
();
#ifdef HAVE_REPLICATION
/*
GRANT and REVOKE are applied the slave in/exclusion rules as they are
...
...
@@ -5401,6 +5422,13 @@ bool mysql_create_user(THD *thd, List <LEX_USER> &list)
TABLE_LIST
tables
[
GRANT_TABLES
];
DBUG_ENTER
(
"mysql_create_user"
);
/*
This statement will be replicated as a statement, even when using
row-based replication. The flag will be reset at the end of the
statement.
*/
thd
->
clear_current_stmt_binlog_row_based
();
/* CREATE USER may be skipped on replication client. */
if
((
result
=
open_grant_tables
(
thd
,
tables
)))
DBUG_RETURN
(
result
!=
1
);
...
...
@@ -5473,6 +5501,13 @@ bool mysql_drop_user(THD *thd, List <LEX_USER> &list)
TABLE_LIST
tables
[
GRANT_TABLES
];
DBUG_ENTER
(
"mysql_drop_user"
);
/*
This statement will be replicated as a statement, even when using
row-based replication. The flag will be reset at the end of the
statement.
*/
thd
->
clear_current_stmt_binlog_row_based
();
/* DROP USER may be skipped on replication client. */
if
((
result
=
open_grant_tables
(
thd
,
tables
)))
DBUG_RETURN
(
result
!=
1
);
...
...
@@ -5537,6 +5572,13 @@ bool mysql_rename_user(THD *thd, List <LEX_USER> &list)
TABLE_LIST
tables
[
GRANT_TABLES
];
DBUG_ENTER
(
"mysql_rename_user"
);
/*
This statement will be replicated as a statement, even when using
row-based replication. The flag will be reset at the end of the
statement.
*/
thd
->
clear_current_stmt_binlog_row_based
();
/* RENAME USER may be skipped on replication client. */
if
((
result
=
open_grant_tables
(
thd
,
tables
)))
DBUG_RETURN
(
result
!=
1
);
...
...
@@ -5612,6 +5654,13 @@ bool mysql_revoke_all(THD *thd, List <LEX_USER> &list)
TABLE_LIST
tables
[
GRANT_TABLES
];
DBUG_ENTER
(
"mysql_revoke_all"
);
/*
This statement will be replicated as a statement, even when using
row-based replication. The flag will be reset at the end of the
statement.
*/
thd
->
clear_current_stmt_binlog_row_based
();
if
((
result
=
open_grant_tables
(
thd
,
tables
)))
DBUG_RETURN
(
result
!=
1
);
...
...
@@ -5802,6 +5851,13 @@ bool sp_revoke_privileges(THD *thd, const char *sp_db, const char *sp_name,
rw_wrlock
(
&
LOCK_grant
);
VOID
(
pthread_mutex_lock
(
&
acl_cache
->
lock
));
/*
This statement will be replicated as a statement, even when using
row-based replication. The flag will be reset at the end of the
statement.
*/
thd
->
clear_current_stmt_binlog_row_based
();
/* Remove procedure access */
do
{
...
...
sql/table.h
View file @
959b8810
...
...
@@ -408,6 +408,10 @@ struct st_table {
/*
If true, the current table row is considered to have all columns set to
NULL, including columns declared as "not null" (see maybe_null).
TODO: Each of these flags take up 8 bits. They can just as easily
be put into one single unsigned long and instead of taking up 18
bytes, it would take up 4.
*/
my_bool
null_row
;
my_bool
force_index
;
...
...
@@ -415,6 +419,7 @@ struct st_table {
my_bool
key_read
,
no_keyread
;
my_bool
locked_by_flush
;
my_bool
locked_by_logger
;
my_bool
no_replicate
;
my_bool
locked_by_name
;
my_bool
fulltext_searched
;
my_bool
no_cache
;
...
...
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