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
0c95fd23
Commit
0c95fd23
authored
Feb 04, 2006
by
aelkin@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge mysql.com:/usr_rh9/home/elkin.rh9/MySQL/Merge/tmp_merge
into mysql.com:/usr_rh9/home/elkin.rh9/MySQL/Merge/5.1-new
parents
a55b7a9f
cf6becde
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
110 additions
and
25 deletions
+110
-25
mysql-test/r/rpl_multi_update4.result
mysql-test/r/rpl_multi_update4.result
+25
-0
mysql-test/t/rpl_multi_update4-slave.opt
mysql-test/t/rpl_multi_update4-slave.opt
+1
-0
mysql-test/t/rpl_multi_update4.test
mysql-test/t/rpl_multi_update4.test
+44
-0
sql/sql_parse.cc
sql/sql_parse.cc
+40
-25
No files found.
mysql-test/r/rpl_multi_update4.result
0 → 100644
View file @
0c95fd23
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;
drop database if exists d1;
drop database if exists d2;
drop database if exists d2;
create database d1;
create table d1.t0 (id int);
create database d2;
use d2;
create table t1 (id int);
create table t2 (id int);
insert into t1 values (1), (2), (3), (4), (5);
insert into t2 select id + 3 from t1;
update t1 join t2 using (id) set t1.id = 0;
insert into d1.t0 values (0);
use d1;
select * from t0 where id=0;
id
0
drop database d1;
drop database d2;
mysql-test/t/rpl_multi_update4-slave.opt
0 → 100644
View file @
0c95fd23
--replicate-wild-do-table=d1.%
mysql-test/t/rpl_multi_update4.test
0 → 100644
View file @
0c95fd23
# Let's verify that multi-update is not always skipped by slave if
# some replicate-* rules exist.
# (BUG#15699)
source
include
/
master
-
slave
.
inc
;
### Clean-up
connection
master
;
--
disable_warnings
drop
database
if
exists
d1
;
drop
database
if
exists
d2
;
connection
slave
;
drop
database
if
exists
d2
;
--
enable_warnings
### Test
connection
master
;
create
database
d1
;
# accepted by slave
create
table
d1
.
t0
(
id
int
);
create
database
d2
;
# ignored by slave
use
d2
;
create
table
t1
(
id
int
);
create
table
t2
(
id
int
);
insert
into
t1
values
(
1
),
(
2
),
(
3
),
(
4
),
(
5
);
insert
into
t2
select
id
+
3
from
t1
;
# a problematic query which must be filter out by slave
update
t1
join
t2
using
(
id
)
set
t1
.
id
=
0
;
insert
into
d1
.
t0
values
(
0
);
# replication works
sync_slave_with_master
;
use
d1
;
#connection slave;
select
*
from
t0
where
id
=
0
;
# must find
### Clean-up
connection
master
;
drop
database
d1
;
drop
database
d2
;
# End of test
sql/sql_parse.cc
View file @
0c95fd23
...
...
@@ -2419,23 +2419,26 @@ mysql_execute_command(THD *thd)
}
}
else
{
#endif
/* HAVE_REPLICATION */
/*
When option readonly is set deny operations which change non-temporary
tables. Except for the replication thread and the 'super' users.
*/
if
(
opt_readonly
&&
!
(
thd
->
security_ctx
->
master_access
&
SUPER_ACL
)
&&
uc_update_queries
[
lex
->
sql_command
]
&&
!
((
lex
->
sql_command
==
SQLCOM_CREATE_TABLE
)
&&
(
lex
->
create_info
.
options
&
HA_LEX_CREATE_TMP_TABLE
))
&&
((
lex
->
sql_command
!=
SQLCOM_UPDATE_MULTI
)
&&
some_non_temp_table_to_be_updated
(
thd
,
all_tables
)))
{
my_error
(
ER_OPTION_PREVENTS_STATEMENT
,
MYF
(
0
),
"--read-only"
);
DBUG_RETURN
(
-
1
);
}
/*
When option readonly is set deny operations which change non-temporary
tables. Except for the replication thread and the 'super' users.
*/
if
(
opt_readonly
&&
!
(
thd
->
security_ctx
->
master_access
&
SUPER_ACL
)
&&
uc_update_queries
[
lex
->
sql_command
]
&&
!
((
lex
->
sql_command
==
SQLCOM_CREATE_TABLE
)
&&
(
lex
->
create_info
.
options
&
HA_LEX_CREATE_TMP_TABLE
))
&&
((
lex
->
sql_command
!=
SQLCOM_UPDATE_MULTI
)
&&
some_non_temp_table_to_be_updated
(
thd
,
all_tables
)))
{
my_error
(
ER_OPTION_PREVENTS_STATEMENT
,
MYF
(
0
),
"--read-only"
);
DBUG_RETURN
(
-
1
);
}
#ifdef HAVE_REPLICATION
}
/* endif unlikely slave */
#endif
if
(
lex
->
orig_sql_command
==
SQLCOM_END
)
statistic_increment
(
thd
->
status_var
.
com_stat
[
lex
->
sql_command
],
&
LOCK_status
);
...
...
@@ -3231,8 +3234,7 @@ end_with_restore_list:
else
res
=
0
;
if
((
res
=
mysql_multi_update_prepare
(
thd
)))
break
;
res
=
mysql_multi_update_prepare
(
thd
);
#ifdef HAVE_REPLICATION
/* Check slave filtering rules */
...
...
@@ -3240,20 +3242,33 @@ end_with_restore_list:
{
if
(
all_tables_not_ok
(
thd
,
all_tables
))
{
if
(
res
!=
0
)
{
res
=
0
;
/* don't care of prev failure */
thd
->
clear_error
();
/* filters are of highest prior */
}
/* we warn the slave SQL thread */
my_error
(
ER_SLAVE_IGNORED_TABLE
,
MYF
(
0
));
break
;
}
if
(
res
)
break
;
}
else
#endif
/* HAVE_REPLICATION */
if
(
opt_readonly
&&
!
(
thd
->
security_ctx
->
master_access
&
SUPER_ACL
)
&&
some_non_temp_table_to_be_updated
(
thd
,
all_tables
))
{
my_error
(
ER_OPTION_PREVENTS_STATEMENT
,
MYF
(
0
),
"--read-only"
);
break
;
}
#endif
/* HAVE_REPLICATION */
if
(
res
)
break
;
if
(
opt_readonly
&&
!
(
thd
->
security_ctx
->
master_access
&
SUPER_ACL
)
&&
some_non_temp_table_to_be_updated
(
thd
,
all_tables
))
{
my_error
(
ER_OPTION_PREVENTS_STATEMENT
,
MYF
(
0
),
"--read-only"
);
break
;
}
#ifdef HAVE_REPLICATION
}
/* unlikely */
#endif
res
=
mysql_multi_update
(
thd
,
all_tables
,
&
select_lex
->
item_list
,
...
...
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