1
0
mirror of https://github.com/MariaDB/server.git synced 2025-10-21 08:47:42 +03:00

Manual merge from mysql-5.1-bugteam.

Conflicts:
  - mysql-test/collections/default.experimental
  - mysql-test/suite/rpl/r/rpl_sp.result
This commit is contained in:
Alexander Nozdrin
2010-02-03 17:01:48 +03:00
17 changed files with 111 additions and 2325 deletions

View File

@@ -1,127 +0,0 @@
--let $count=1
connection master;
if (`SELECT '$diff_table' = ''`)
{
let $diff_table= mysql.user;
}
--echo
--echo
--echo
--echo TEST STATEMENT: '$statement'
--echo --------------------------------------------------------------------------
if (`SELECT '$diff_columns' = ''`)
{
eval CREATE VIEW test.bug48321_v1 AS SELECT user FROM $diff_table
WHERE user LIKE 'bug48321%';
}
if (`SELECT '$diff_columns' <> ''`)
{
eval CREATE VIEW test.bug48321_v1 AS SELECT user, $diff_columns
FROM $diff_table WHERE user LIKE 'bug48321%';
}
while (`SELECT $count < 6`)
{
--echo
--echo TEST STATEMENT: '$statement'
--echo CASE $count:
--echo -------
let $user2= 'bug48321_2'@'localhost';
let $user3= 'bug48321_3'@'localhost';
let $user1= CURRENT_USER();
if (`SELECT '$action'='RENAME'`)
{
let $user1= $user1 TO 'bug48321_4'@'localhost';
let $user2= $user2 TO 'bug48321_5'@'localhost';
let $user3= $user3 TO 'bug48321_6'@'localhost';
}
if (`SELECT '$action'='GRANT'`)
{
let $user1= $user1 IDENTIFIED BY 'user1';
let $user3= $user3 IDENTIFIED BY '';
}
if (`SELECT $count=1`)
{
--echo # Only CURRENT_USER() in the user list of the test statement.
let $users_list= $user1;
}
if (`SELECT $count=2`)
{
--echo # Two users are in the test statement, CURRENT_USER is the first one.
let $users_list= $user1, $user2;
}
if (`SELECT $count=3`)
{
--echo # Two users are in the test statement, CURRENT_USER is the last one.
let $users_list= $user2, $user1;
}
if (`SELECT $count=4`)
{
--echo # Three users are in the test statement, CURRENT_USER is the second one.
let $users_list= $user2, $user1, $user3;
}
if (`SELECT $count=5`)
{
--echo # CURRENT_USER is not in the test statement.
let $users_list= $user2, $user3;
}
--echo users_list= $users_list
--echo
--echo # Connect to master with user1, so user1 always is the current user,
--echo # when test statement is runing.
eval GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1'@'localhost'
WITH GRANT OPTION;
eval CREATE USER 'bug48321_2'@'localhost', 'bug48321_3'@'localhost'
IDENTIFIED BY 'user3';
if (`SELECT '$action'='REVOKE'`)
{
--echo
--echo # Grant some privileges to users at first when testing
--echo # 'REVOKE ...' statement.
eval GRANT ALL PRIVILEGES ON *.* TO 'bug48321_2'@'localhost',
'bug48321_3'@'localhost' WITH GRANT OPTION;
eval GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO 'bug48321_1'@'localhost',
'bug48321_2'@'localhost', 'bug48321_3'@'localhost';
}
connect (conn1, 127.0.0.1, 'bug48321_1'@'localhost',,);
connection conn1;
--echo
let $temp= `SELECT "$statement"`;
eval $temp;
--echo
disconnect conn1;
connection master;
sync_slave_with_master;
connection master;
let $diff_table_1= master:test.bug48321_v1;
let $diff_table_2= slave:test.bug48321_v1;
source include/diff_tables.inc;
--echo
--echo # Delete all bug48321% users
connection master;
DELETE FROM mysql.user WHERE user LIKE 'bug48321%';
DELETE FROM mysql.procs_priv WHERE user LIKE 'bug48321%';
FLUSH PRIVILEGES;
inc $count;
}
DROP VIEW test.bug48321_v1;

4
mysql-test/r/bug46080.result Normal file → Executable file
View File

@@ -2,8 +2,8 @@
# Bug #46080: group_concat(... order by) crashes server when
# sort_buffer_size cannot allocate
#
call mtr.add_suppression("Out of memory at line .*, 'my_alloc.c'");
call mtr.add_suppression("needed .* byte .*k., memory in use: .* bytes .*k");
call mtr.add_suppression("Out of memory at line .*, '.*my_alloc.c'");
call mtr.add_suppression("needed .* byte (.*k)., memory in use: .* bytes (.*k)");
CREATE TABLE t1(a CHAR(255));
INSERT INTO t1 VALUES ('a');
SET @@SESSION.sort_buffer_size=5*16*1000000;

View File

@@ -17,15 +17,16 @@ show grants for x@y;
Grants for x@y
GRANT USAGE ON *.* TO 'x'@'y'
GRANT SELECT ON `d1`.`t` TO 'x'@'y'
show binlog events from <binlog_start>;
show binlog events;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # drop database if exists d1
master-bin.000001 # Query # # create database d1
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 4 Format_desc 1 107 Server ver: VERSION, Binlog ver: 4
master-bin.000001 107 Query 1 194 drop database if exists d1
master-bin.000001 194 Query 1 273 create database d1
master-bin.000001 273 Query 1 371 use `d1`; create table t (s1 int) engine=innodb
master-bin.000001 371 Query 1 437 BEGIN
master-bin.000001 437 Query 1 522 use `d1`; insert into t values (1)
master-bin.000001 522 Xid 1 549 COMMIT /* XID */
master-bin.000001 549 Query 1 634 use `d1`; grant select on t to x@y
start transaction;
insert into t values (2);
revoke select on t from x@y;
@@ -37,18 +38,19 @@ s1
show grants for x@y;
Grants for x@y
GRANT USAGE ON *.* TO 'x'@'y'
show binlog events from <binlog_start>;
show binlog events;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # drop database if exists d1
master-bin.000001 # Query # # create database d1
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 # # 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 4 Format_desc 1 107 Server ver: VERSION, Binlog ver: 4
master-bin.000001 107 Query 1 194 drop database if exists d1
master-bin.000001 194 Query 1 273 create database d1
master-bin.000001 273 Query 1 371 use `d1`; create table t (s1 int) engine=innodb
master-bin.000001 371 Query 1 437 BEGIN
master-bin.000001 437 Query 1 522 use `d1`; insert into t values (1)
master-bin.000001 522 Xid 1 549 COMMIT /* XID */
master-bin.000001 549 Query 1 634 use `d1`; grant select on t to x@y
master-bin.000001 634 Query 1 700 BEGIN
master-bin.000001 700 Query 1 785 use `d1`; insert into t values (2)
master-bin.000001 785 Xid 1 812 COMMIT /* XID */
master-bin.000001 812 Query 1 900 use `d1`; revoke select on t from x@y
drop user x@y;
drop database d1;

View File

@@ -251,45 +251,3 @@ 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 root@localhost SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
test_rpl e2 @ SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
==========MASTER==========
SELECT COUNT(*) FROM t1;
COUNT(*)
@@ -1079,7 +1079,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 DEFINER=`root`@`localhost` EVENT e1 RENAME TO e2
master-bin.000001 # Query 1 # use `test_rpl`; ALTER 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

@@ -433,9 +433,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
@@ -510,7 +510,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
@@ -675,13 +675,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`()
@@ -842,7 +842,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/*!*/;

File diff suppressed because it is too large Load Diff

View File

@@ -25,7 +25,9 @@ grant select on t to x@y;
#
rollback;
show grants for x@y;
--source include/show_binlog_events.inc
--replace_result $VERSION VERSION
--replace_regex /\/\* xid=.* \*\//\/* XID *\//
show binlog events;
start transaction;
insert into t values (2);
revoke select on t from x@y;
@@ -35,7 +37,9 @@ revoke select on t from x@y;
commit;
select * from t;
show grants for x@y;
--source include/show_binlog_events.inc
--replace_result $VERSION VERSION
--replace_regex /\/\* xid=.* \*\//\/* XID *\//
show binlog events;
drop user x@y;
drop database d1;
--sync_slave_with_master

View File

@@ -105,85 +105,3 @@ 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

@@ -54,85 +54,8 @@ 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;

View File

@@ -3,8 +3,8 @@
--echo # sort_buffer_size cannot allocate
--echo #
call mtr.add_suppression("Out of memory at line .*, 'my_alloc.c'");
call mtr.add_suppression("needed .* byte .*k., memory in use: .* bytes .*k");
call mtr.add_suppression("Out of memory at line .*, '.*my_alloc.c'");
call mtr.add_suppression("needed .* byte (.*k)., memory in use: .* bytes (.*k)");
CREATE TABLE t1(a CHAR(255));
INSERT INTO t1 VALUES ('a');