1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

Manual merge from mysql-trunk-merge.

Conflicts:
  - mysql-test/suite/rpl/r/rpl_binlog_grant.result
  - mysql-test/suite/rpl/r/rpl_sp.result
  - mysql-test/suite/rpl/t/rpl_binlog_grant.test
  - sql/sql_parse.cc
  - sql/sql_table.cc
  - sql/sql_test.cc
This commit is contained in:
Alexander Nozdrin
2010-01-31 01:06:50 +03:00
47 changed files with 2938 additions and 469 deletions

View File

@ -25,7 +25,7 @@ master-bin.000001 # Query # # use `d1`; create table t (s1 int) engine=innodb
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `d1`; insert into t values (1)
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # use `d1`; grant select on t to x@y
master-bin.000001 # Query # # use `d1`; grant select on t to 'x'@'y'
start transaction;
insert into t values (2);
revoke select on t from x@y;
@ -45,10 +45,10 @@ master-bin.000001 # Query # # use `d1`; create table t (s1 int) engine=innodb
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `d1`; insert into t values (1)
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # use `d1`; grant select on t to x@y
master-bin.000001 # Query # # use `d1`; grant select on t to 'x'@'y'
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `d1`; insert into t values (2)
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # use `d1`; revoke select on t from x@y
master-bin.000001 # Query # # use `d1`; revoke select on t from 'x'@'y'
drop user x@y;
drop database d1;

View File

@ -161,3 +161,45 @@ DROP EVENT event44331_1;
DROP EVENT event44331_2;
DROP EVENT event44331_3;
DROP EVENT event44331_4;
DROP VIEW IF EXISTS events_view;
DROP EVENT IF EXISTS event48321_1;
DROP EVENT IF EXISTS event48321_2;
DROP EVENT IF EXISTS event48321_3;
DROP EVENT IF EXISTS event48321_4;
CREATE VIEW events_view AS
SELECT EVENT_SCHEMA, EVENT_NAME, DEFINER FROM INFORMATION_SCHEMA.EVENTS
WHERE EVENT_NAME LIKE 'event48321%';
CREATE DEFINER=CURRENT_USER() /*!50000 EVENT event48321_1 */
ON SCHEDULE AT CURRENT_TIMESTAMP
ON COMPLETION PRESERVE DISABLE
DO SELECT 48321 as BUG;
CREATE DEFINER=CURRENT_USER() EVENT event48321_2
ON SCHEDULE AT CURRENT_TIMESTAMP
ON COMPLETION PRESERVE DISABLE
DO SELECT 48321 as BUG;
CREATE /*!50000 DEFINER=CURRENT_USER() */ EVENT event48321_3
ON SCHEDULE AT CURRENT_TIMESTAMP
ON COMPLETION PRESERVE DISABLE
DO SELECT 48321 as BUG;
Comparing tables master:test.events_view and slave:test.events_view
ALTER DEFINER=CURRENT_USER() EVENT event48321_1 RENAME TO event48321_4;
ALTER DEFINER=CURRENT_USER() EVENT event48321_2
ON SCHEDULE AT CURRENT_TIMESTAMP
ON COMPLETION PRESERVE DISABLE
DO SELECT 48321 as BUG;
ALTER /*!50000 DEFINER=CURRENT_USER() */ EVENT event48321_3
ON SCHEDULE AT CURRENT_TIMESTAMP
ON COMPLETION PRESERVE DISABLE
DO SELECT 48321 as BUG;
Comparing tables master:test.events_view and slave:test.events_view
ALTER /*!50000 DEFINER=CURRENT_USER() */ EVENT event48321_3
ON SCHEDULE AT CURRENT_TIMESTAMP
ON COMPLETION PRESERVE DISABLE
DO SELECT 48321 as BUG; ALTER EVENT event48321_2 ENABLE |
Comparing tables master:test.events_view and slave:test.events_view
ALTER EVENT event48321_3 ENABLE;
Comparing tables master:test.events_view and slave:test.events_view
DROP EVENT event48321_4;
DROP EVENT event48321_2;
DROP EVENT event48321_3;
DROP VIEW events_view;

View File

@ -750,7 +750,7 @@ test_rpl e2 root@localhost SYSTEM RECURRING NULL 1 # # NULL ENABLED 1 latin1 lat
USE test_rpl;
SHOW EVENTS;
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
test_rpl e2 @ SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
test_rpl e2 root@localhost SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
==========MASTER==========
SELECT COUNT(*) FROM t1;
COUNT(*)
@ -1077,7 +1077,7 @@ master-bin.000001 # Query 1 # BEGIN
master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 'test1')
master-bin.000001 # Xid 1 # #
master-bin.000001 # Query 1 # use `test_rpl`; CREATE DEFINER=`root`@`localhost` EVENT e1 ON SCHEDULE EVERY '1' SECOND COMMENT 'e_second_comment' DO DELETE FROM t1
master-bin.000001 # Query 1 # use `test_rpl`; ALTER EVENT e1 RENAME TO e2
master-bin.000001 # Query 1 # use `test_rpl`; ALTER DEFINER=`root`@`localhost` EVENT e1 RENAME TO e2
master-bin.000001 # Query 1 # use `test_rpl`; DROP EVENT e2
master-bin.000001 # Query 1 # BEGIN
master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1

View File

@ -213,7 +213,7 @@ Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (26)
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # use `test`; ALTER EVENT evt COMMENT 'evt'
master-bin.000001 # Query # # use `test`; ALTER DEFINER=`root`@`localhost` EVENT evt COMMENT 'evt'
-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-

View File

@ -233,7 +233,7 @@ master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # use `test`; ALTER EVENT evt COMMENT 'evt'
master-bin.000001 # Query # # use `test`; ALTER DEFINER=`root`@`localhost` EVENT evt COMMENT 'evt'
-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-

View File

@ -129,3 +129,20 @@ use b48297_db1;
Comparing tables master:b48297_db1.t1 and slave:b48297_db1.t1
DROP DATABASE b48297_db1;
DROP DATABASE b42897_db2;
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;
use test;
CREATE TABLE t1 (`key` TEXT, `text` TEXT);
LOAD DATA INFILE '../../std_data/loaddata2.dat' REPLACE INTO TABLE `t1` FIELDS TERMINATED BY ',';
SELECT * FROM t1;
key text
Field A 'Field B'
Field 1 'Field 2'
Field 3 'Field 4'
'Field 5' 'Field 6'
Field 6 'Field 7'
DROP TABLE t1;

View File

@ -436,9 +436,9 @@ master-bin.000001 # Query # # use `mysqltest1`; create table t2 like t1
master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo3`()
DETERMINISTIC
insert into t1 values (15)
master-bin.000001 # Query # # use `mysqltest1`; grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1
master-bin.000001 # Query # # use `mysqltest1`; grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1
master-bin.000001 # Query # # use `mysqltest1`; grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1
master-bin.000001 # Query # # use `mysqltest1`; grant CREATE ROUTINE, EXECUTE on mysqltest1.* to 'zedjzlcsjhd'@'127.0.0.1'
master-bin.000001 # Query # # use `mysqltest1`; grant SELECT on mysqltest1.t1 to 'zedjzlcsjhd'@'127.0.0.1'
master-bin.000001 # Query # # use `mysqltest1`; grant SELECT, INSERT on mysqltest1.t2 to 'zedjzlcsjhd'@'127.0.0.1'
master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` PROCEDURE `foo4`()
DETERMINISTIC
begin
@ -551,7 +551,7 @@ select * from t1
master-bin.000001 # Query # # use `mysqltest1`; drop procedure foo
master-bin.000001 # Query # # use `mysqltest1`; drop function fn1
master-bin.000001 # Query # # drop database mysqltest1
master-bin.000001 # Query # # drop user "zedjzlcsjhd"@127.0.0.1
master-bin.000001 # Query # # DROP USER 'zedjzlcsjhd'@'127.0.0.1'
master-bin.000001 # Query # # use `test`; drop function if exists f1
master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
READS SQL DATA
@ -736,13 +736,13 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `foo3`()
insert into t1 values (15)
/*!*/;
SET TIMESTAMP=t/*!*/;
grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1
grant CREATE ROUTINE, EXECUTE on mysqltest1.* to 'zedjzlcsjhd'@'127.0.0.1'
/*!*/;
SET TIMESTAMP=t/*!*/;
grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1
grant SELECT on mysqltest1.t1 to 'zedjzlcsjhd'@'127.0.0.1'
/*!*/;
SET TIMESTAMP=t/*!*/;
grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1
grant SELECT, INSERT on mysqltest1.t2 to 'zedjzlcsjhd'@'127.0.0.1'
/*!*/;
SET TIMESTAMP=t/*!*/;
CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` PROCEDURE `foo4`()
@ -1017,7 +1017,7 @@ SET TIMESTAMP=t/*!*/;
drop database mysqltest1
/*!*/;
SET TIMESTAMP=t/*!*/;
drop user "zedjzlcsjhd"@127.0.0.1
DROP USER 'zedjzlcsjhd'@'127.0.0.1'
/*!*/;
use test/*!*/;
SET TIMESTAMP=t/*!*/;

View File

@ -213,7 +213,7 @@ Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1(ddl_case) VALUES (26)
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # use `test`; ALTER EVENT evt COMMENT 'evt'
master-bin.000001 # Query # # use `test`; ALTER DEFINER=`root`@`localhost` EVENT evt COMMENT 'evt'
-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-

View File

@ -248,3 +248,23 @@ one
1
drop table t1;
start slave;
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 table if exists t1;
Warnings:
Note 1051 Unknown table 't1'
flush logs;
stop slave;
reset slave;
start slave until master_log_file='master-bin.000001', master_log_pos=294 /* to stop right before DROP */;
show tables /* t1 must exist */;
Tables_in_test
t1
drop table t1;
stop slave;
reset slave;
reset master;

File diff suppressed because it is too large Load Diff

View File

@ -25,7 +25,7 @@ grant select on t to x@y;
#
rollback;
show grants for x@y;
source include/show_binlog_events.inc;
--source include/show_binlog_events.inc
start transaction;
insert into t values (2);
revoke select on t from x@y;
@ -35,7 +35,7 @@ revoke select on t from x@y;
commit;
select * from t;
show grants for x@y;
source include/show_binlog_events.inc;
--source include/show_binlog_events.inc
drop user x@y;
drop database d1;
--sync_slave_with_master

View File

@ -95,3 +95,85 @@ DROP EVENT event44331_2;
DROP EVENT event44331_3;
DROP EVENT event44331_4;
sync_slave_with_master;
#
# BUG#48321
# This test verifies if the definer is consistent between master and slave,
# when the event is created or altered with the DEFINER clause that the
# DEFINER is set to CURRENT_USER()
#
connection master;
--disable_warnings
DROP VIEW IF EXISTS events_view;
DROP EVENT IF EXISTS event48321_1;
DROP EVENT IF EXISTS event48321_2;
DROP EVENT IF EXISTS event48321_3;
DROP EVENT IF EXISTS event48321_4;
--enable_warnings
CREATE VIEW events_view AS
SELECT EVENT_SCHEMA, EVENT_NAME, DEFINER FROM INFORMATION_SCHEMA.EVENTS
WHERE EVENT_NAME LIKE 'event48321%';
let $diff_table_1= master:test.events_view;
let $diff_table_2= slave:test.events_view;
CREATE DEFINER=CURRENT_USER() /*!50000 EVENT event48321_1 */
ON SCHEDULE AT CURRENT_TIMESTAMP
ON COMPLETION PRESERVE DISABLE
DO SELECT 48321 as BUG;
CREATE DEFINER=CURRENT_USER() EVENT event48321_2
ON SCHEDULE AT CURRENT_TIMESTAMP
ON COMPLETION PRESERVE DISABLE
DO SELECT 48321 as BUG;
CREATE /*!50000 DEFINER=CURRENT_USER() */ EVENT event48321_3
ON SCHEDULE AT CURRENT_TIMESTAMP
ON COMPLETION PRESERVE DISABLE
DO SELECT 48321 as BUG;
sync_slave_with_master;
--source include/diff_tables.inc
connection master;
ALTER DEFINER=CURRENT_USER() EVENT event48321_1 RENAME TO event48321_4;
ALTER DEFINER=CURRENT_USER() EVENT event48321_2
ON SCHEDULE AT CURRENT_TIMESTAMP
ON COMPLETION PRESERVE DISABLE
DO SELECT 48321 as BUG;
ALTER /*!50000 DEFINER=CURRENT_USER() */ EVENT event48321_3
ON SCHEDULE AT CURRENT_TIMESTAMP
ON COMPLETION PRESERVE DISABLE
DO SELECT 48321 as BUG;
sync_slave_with_master;
--source include/diff_tables.inc
# Two statements in on query
connection master;
DELIMITER |;
ALTER /*!50000 DEFINER=CURRENT_USER() */ EVENT event48321_3
ON SCHEDULE AT CURRENT_TIMESTAMP
ON COMPLETION PRESERVE DISABLE
DO SELECT 48321 as BUG; ALTER EVENT event48321_2 ENABLE |
DELIMITER ;|
sync_slave_with_master;
--source include/diff_tables.inc
#No Event boday
connection master;
ALTER EVENT event48321_3 ENABLE;
sync_slave_with_master;
--source include/diff_tables.inc
connection master;
DROP EVENT event48321_4;
DROP EVENT event48321_2;
DROP EVENT event48321_3;
DROP VIEW events_view;
--source include/master-slave-end.inc

View File

@ -164,4 +164,39 @@ connection slave;
start slave;
sync_with_master;
# Bug #47142 "slave start until" stops 1 event too late in 4.1 to 5.0 replication
#
# testing fixes that refine the start position of prior-5.0 master's event
# and by that provide correct execution of
# START SLAVE UNTIL ... master_log_pos= x;
# Keep the test at the end of the file because it manipulates with binlog files
# to substitute the genuine one with a prepared on 4.1 server.
#
--source include/master-slave-reset.inc
connection master;
drop table if exists t1; # there is create table t1 in bug47142_master-bin.000001
flush logs;
let $MYSQLD_DATADIR= `select @@datadir`;
--remove_file $MYSQLD_DATADIR/master-bin.000001
--copy_file $MYSQL_TEST_DIR/std_data/bug47142_master-bin.000001 $MYSQLD_DATADIR/master-bin.000001
connection slave;
stop slave;
reset slave;
start slave until master_log_file='master-bin.000001', master_log_pos=294 /* to stop right before DROP */;
--source include/wait_for_slave_sql_to_stop.inc
show tables /* t1 must exist */;
# clean-up of Bug #47142 testing
drop table t1; # drop on slave only, master does not have t1.
stop slave;
reset slave;
connection master;
reset master;
# End of tests

View File

@ -54,8 +54,85 @@ drop user 'not_exist_user1'@'fakehost', 'not_exist_user2'@'fakehost';
sync_slave_with_master;
select Host,User from mysql.user where Host='fakehost';
#
# show the binlog events on the master
#
connection master;
source include/show_binlog_events.inc;
#
# BUG#48321
#
let $action= RENAME;
let $statement= RENAME USER \$users_list;
source extra/rpl_tests/rpl_current_user.test;
let $action= DROP;
let $statement= DROP USER \$users_list;
source extra/rpl_tests/rpl_current_user.test;
--disable_warnings
DROP PROCEDURE IF EXISTS f1;
--enable_warnings
CREATE PROCEDURE p1() SELECT 1;
#REVOKE ALL PRIVILEGES
let $action= REVOKE;
let $diff_columns= Select_priv, Update_priv, Create_priv, Drop_priv, Grant_priv;
let $statement= REVOKE ALL PRIVILEGES, GRANT OPTION FROM \$users_list;
source extra/rpl_tests/rpl_current_user.test;
#REVOKE ALL PRIVILEGES with comment
let $action= REVOKE;
let $diff_columns= Select_priv, Update_priv, Create_priv, Drop_priv, Grant_priv;
let $statement= REVOKE ALL PRIVILEGES, GRANT OPTION FROM \$users_list /*With comment*/;
source extra/rpl_tests/rpl_current_user.test;
#REVOKE ALL PRIVILEGES with comment
let $action= REVOKE;
let $diff_columns= Select_priv, Update_priv, Create_priv, Drop_priv, Grant_priv;
let $statement= REVOKE ALL PRIVILEGES, GRANT OPTION FROM /*With comment*/ \$users_list;
source extra/rpl_tests/rpl_current_user.test;
let $diff_columns= Select_priv, Update_priv, Create_priv, Drop_priv;
#REVOKE ON TABLE
let $statement= REVOKE SELECT, UPDATE, CREATE, DROP ON TABLE *.* FROM \$users_list;
source extra/rpl_tests/rpl_current_user.test;
#REVOKE ON CREATE ROUTINE
let $diff_columns= Create_routine_priv;
let $statement= REVOKE CREATE ROUTINE ON *.* FROM \$users_list;
source extra/rpl_tests/rpl_current_user.test;
#REVOKE ON ROUTINE
let $diff_table= mysql.procs_priv;
let $diff_columns= Routine_name, Proc_priv;
let $statement= REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM \$users_list;
source extra/rpl_tests/rpl_current_user.test;
let $diff_table= mysql.user;
#GRANT ALL PRIVILEGES
let $action= GRANT;
let $diff_columns= Select_priv, Update_priv, Create_priv, Drop_priv, Grant_priv, Password;
let $statement= GRANT ALL PRIVILEGES ON *.* TO \$users_list WITH GRANT OPTION;
source extra/rpl_tests/rpl_current_user.test;
#GRANT ALL PRIVILEGES with comment
let $action= GRANT;
let $diff_columns= Select_priv, Update_priv, Create_priv, Drop_priv, Grant_priv, Password;
let $statement= GRANT ALL PRIVILEGES ON *.* TO \$users_list /* With Comment */ WITH GRANT OPTION;
source extra/rpl_tests/rpl_current_user.test;
#GRANT ON TABLE
let $diff_columns= Select_priv, Update_priv, Create_priv, Drop_priv, Password;
let $statement= GRANT SELECT, UPDATE, CREATE, DROP ON TABLE *.* TO \$users_list;
source extra/rpl_tests/rpl_current_user.test;
#GRANT ON CREATE ROUTINE
let $diff_columns= Create_routine_priv;
let $statement= GRANT CREATE ROUTINE ON *.* TO \$users_list;
source extra/rpl_tests/rpl_current_user.test;
#GRANT ON ROUTINE
let $diff_table= mysql.procs_priv;
let $diff_columns= Routine_name, Proc_priv;
let $statement= GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO \$users_list;
DROP PROCEDURE p1;
source extra/rpl_tests/rpl_current_user.test;