From b49b86aed35d98e3a410abae9012941b7c82d513 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 10 Jan 2006 13:44:08 +0200 Subject: [PATCH 1/2] BUG#9483 test was overworked to account reviews finally to leave only REVOKE check. There is a specific rpl_ignore_grant test case for GRANT. mysql-test/r/rpl_ignore_revoke.result: New BitKeeper file ``mysql-test/r/rpl_ignore_revoke.result'' mysql-test/t/rpl_ignore_revoke-slave.opt: New BitKeeper file ``mysql-test/t/rpl_ignore_revoke-slave.opt'' mysql-test/t/rpl_ignore_revoke.test: New BitKeeper file ``mysql-test/t/rpl_ignore_revoke.test'' --- mysql-test/r/rpl_ignore_revoke.result | 28 +++++++++++++++ mysql-test/t/rpl_ignore_revoke-slave.opt | 1 + mysql-test/t/rpl_ignore_revoke.test | 43 ++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 mysql-test/r/rpl_ignore_revoke.result create mode 100644 mysql-test/t/rpl_ignore_revoke-slave.opt create mode 100644 mysql-test/t/rpl_ignore_revoke.test diff --git a/mysql-test/r/rpl_ignore_revoke.result b/mysql-test/r/rpl_ignore_revoke.result new file mode 100644 index 00000000000..094b571f4f4 --- /dev/null +++ b/mysql-test/r/rpl_ignore_revoke.result @@ -0,0 +1,28 @@ +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; +grant select on *.* to 'user_foo'@'%' identified by 'user_foopass'; +revoke select on *.* from 'user_foo'@'%'; +select select_priv from mysql.user where user='user_foo' /* master:must be N */; +select_priv +N +grant select on *.* to 'user_foo'@'%' identified by 'user_foopass'; +revoke select on *.* from 'user_foo'@'%'; +select select_priv from mysql.user where user='user_foo' /* slave:must be N */; +select_priv +N +grant select on *.* to 'user_foo'@'%' identified by 'user_foopass'; +select select_priv from mysql.user where user='user_foo' /* slave:must be Y */; +select_priv +Y +revoke select on *.* from 'user_foo'; +select select_priv from mysql.user where user='user_foo' /* master:must be N */; +select_priv +N +select select_priv from mysql.user where user='user_foo' /* slave:must get Y */; +select_priv +Y +revoke select on *.* FROM 'user_foo'; diff --git a/mysql-test/t/rpl_ignore_revoke-slave.opt b/mysql-test/t/rpl_ignore_revoke-slave.opt new file mode 100644 index 00000000000..e931bfbd37e --- /dev/null +++ b/mysql-test/t/rpl_ignore_revoke-slave.opt @@ -0,0 +1 @@ +--replicate-wild-ignore-table=mysql.% diff --git a/mysql-test/t/rpl_ignore_revoke.test b/mysql-test/t/rpl_ignore_revoke.test new file mode 100644 index 00000000000..e5b5bafb3c5 --- /dev/null +++ b/mysql-test/t/rpl_ignore_revoke.test @@ -0,0 +1,43 @@ +# test verifies that REVOKE must not be replicated when +# slave server starts with --replicate-wild-ignore-table=mysql.% +# the option is set in rpl_ignore_revoke-slave.opt +# The first part of BUG#9483 for GRANT is checked by +# existed specific rpl_ignore_grant test case (BUG#980) + + +source include/master-slave.inc; + +### CLEAN-UP: create an account and manually duplicate it on the slave + +connection master; +grant select on *.* to 'user_foo'@'%' identified by 'user_foopass'; +revoke select on *.* from 'user_foo'@'%'; +select select_priv from mysql.user where user='user_foo' /* master:must be N */; + +sync_slave_with_master; +#connection slave; +grant select on *.* to 'user_foo'@'%' identified by 'user_foopass'; +revoke select on *.* from 'user_foo'@'%'; +select select_priv from mysql.user where user='user_foo' /* slave:must be N */; + + +### TEST + +#connection slave; +grant select on *.* to 'user_foo'@'%' identified by 'user_foopass'; +select select_priv from mysql.user where user='user_foo' /* slave:must be Y */; + +connection master; +revoke select on *.* from 'user_foo'; +select select_priv from mysql.user where user='user_foo' /* master:must be N */; + +sync_slave_with_master; +#connection slave; +select select_priv from mysql.user where user='user_foo' /* slave:must get Y */; + +### CLEAN-UP + +connection slave; +--disable_abort_on_error +revoke select on *.* FROM 'user_foo'; +--enable_abort_on_error From 935ad7e8f376805f435d6e105d337efb54a31379 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 10 Jan 2006 15:56:30 +0100 Subject: [PATCH 2/2] Fix for crashing mysqltest client/mysqltest.c: Allocate one extra byte for string terminator in varname --- client/mysqltest.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/mysqltest.c b/client/mysqltest.c index dbb910c2e3d..c31e8bc693b 100644 --- a/client/mysqltest.c +++ b/client/mysqltest.c @@ -4207,7 +4207,7 @@ static VAR *var_init(VAR *v, const char *name, int name_len, const char *val, val_len = strlen(val) ; val_alloc_len = val_len + 16; /* room to grow */ if (!(tmp_var=v) && !(tmp_var = (VAR*)my_malloc(sizeof(*tmp_var) - + name_len, MYF(MY_WME)))) + + name_len+1, MYF(MY_WME)))) die("Out of memory"); tmp_var->name = (name) ? (char*) tmp_var + sizeof(*tmp_var) : 0;