mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge bk-internal.mysql.com:/data0/bk/mysql-4.1
into bk-internal.mysql.com:/data0/bk/mysql-4.1-cluster-extra BitKeeper/etc/logging_ok: auto-union sql/ha_ndbcluster.cc: Auto merged sql/mysqld.cc: Auto merged
This commit is contained in:
@ -65,6 +65,9 @@ execute stmt1 using @1000, @duplicate, @5;
|
||||
select a,b from t1 where a >= 1000 order by a ;
|
||||
delete from t1 where a >= 1000 ;
|
||||
|
||||
set @1=1 ;
|
||||
set @2=2 ;
|
||||
set @100=100 ;
|
||||
set @float=1.00;
|
||||
set @five='five' ;
|
||||
--disable_warnings
|
||||
|
@ -4,6 +4,7 @@
|
||||
# Slightly updated by Monty
|
||||
# Cleaned up again by Matt
|
||||
# Fixed by Sergei
|
||||
# List of failed cases (--force) backported from 4.1 by Joerg
|
||||
# :-)
|
||||
|
||||
#++
|
||||
@ -1348,7 +1349,7 @@ run_testcase ()
|
||||
result_file="$result_file$RESULT_EXT"
|
||||
fi
|
||||
if [ "$USE_MANAGER" = 1 ] ; then
|
||||
many_slaves=`$EXPR \( \( $tname : rpl_failsafe \) != 0 \) \| \( \( $tname : rpl_chain_temp_table \) != 0 \)`
|
||||
many_slaves=`$EXPR \( \( $tname : rpl_failsafe \) != 0 \) \| \( \( $tname : rpl_chain_temp_table \) != 0 \)`
|
||||
fi
|
||||
if $EXPR "$tname" '<' "$START_FROM" > /dev/null ; then
|
||||
#skip_test $tname
|
||||
|
@ -28,4 +28,12 @@ commit;
|
||||
unlock tables;
|
||||
flush tables with read lock;
|
||||
unlock tables;
|
||||
begin;
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
10
|
||||
show create database test;
|
||||
Database Create Database
|
||||
test CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET latin1 */
|
||||
drop table t1;
|
||||
|
@ -341,3 +341,67 @@ select Host,Db,User,Table_name,Column_name,Column_priv from mysql.columns_priv;
|
||||
Host Db User Table_name Column_name Column_priv
|
||||
drop user grant_user@localhost;
|
||||
drop table t1;
|
||||
create database mysqltest_1;
|
||||
create database mysqltest_2;
|
||||
create table mysqltest_1.t1 select 1 a, 2 q;
|
||||
create table mysqltest_1.t2 select 1 b, 2 r;
|
||||
create table mysqltest_2.t1 select 1 c, 2 s;
|
||||
create table mysqltest_2.t2 select 1 d, 2 t;
|
||||
grant update (a) on mysqltest_1.t1 to mysqltest_3@localhost;
|
||||
grant select (b) on mysqltest_1.t2 to mysqltest_3@localhost;
|
||||
grant select (c) on mysqltest_2.t1 to mysqltest_3@localhost;
|
||||
grant update (d) on mysqltest_2.t2 to mysqltest_3@localhost;
|
||||
show grants for mysqltest_3@localhost;
|
||||
Grants for mysqltest_3@localhost
|
||||
GRANT USAGE ON *.* TO 'mysqltest_3'@'localhost'
|
||||
GRANT SELECT (b) ON `mysqltest_1`.`t2` TO 'mysqltest_3'@'localhost'
|
||||
GRANT SELECT (c) ON `mysqltest_2`.`t1` TO 'mysqltest_3'@'localhost'
|
||||
GRANT UPDATE (a) ON `mysqltest_1`.`t1` TO 'mysqltest_3'@'localhost'
|
||||
GRANT UPDATE (d) ON `mysqltest_2`.`t2` TO 'mysqltest_3'@'localhost'
|
||||
update mysqltest_1.t1, mysqltest_1.t2 set q=10 where b=1;
|
||||
ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for column 'q' in table 't1'
|
||||
update mysqltest_1.t1, mysqltest_2.t2 set d=20 where d=1;
|
||||
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 'd' in table 't2'
|
||||
update mysqltest_2.t1, mysqltest_1.t2 set c=20 where b=1;
|
||||
ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for column 'c' in table 't1'
|
||||
update mysqltest_2.t1, mysqltest_2.t2 set d=10 where s=2;
|
||||
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 's' in table 't1'
|
||||
update mysqltest_1.t1, mysqltest_2.t2 set a=10,d=10;
|
||||
update mysqltest_1.t1, mysqltest_2.t1 set a=20 where c=20;
|
||||
select t1.*,t2.* from mysqltest_1.t1,mysqltest_1.t2;
|
||||
a q b r
|
||||
10 2 1 2
|
||||
select t1.*,t2.* from mysqltest_2.t1,mysqltest_2.t2;
|
||||
c s d t
|
||||
1 2 10 2
|
||||
revoke all on mysqltest_1.t1 from mysqltest_3@localhost;
|
||||
revoke all on mysqltest_1.t2 from mysqltest_3@localhost;
|
||||
revoke all on mysqltest_2.t1 from mysqltest_3@localhost;
|
||||
revoke all on mysqltest_2.t2 from mysqltest_3@localhost;
|
||||
grant all on mysqltest_2.* to mysqltest_3@localhost;
|
||||
grant select on *.* to mysqltest_3@localhost;
|
||||
flush privileges;
|
||||
use mysqltest_1;
|
||||
update mysqltest_2.t1, mysqltest_2.t2 set c=500,d=600;
|
||||
update mysqltest_1.t1, mysqltest_1.t2 set a=100,b=200;
|
||||
ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for column 'a' in table 't1'
|
||||
use mysqltest_2;
|
||||
update mysqltest_1.t1, mysqltest_1.t2 set a=100,b=200;
|
||||
ERROR 42000: Access denied for user 'mysqltest_3'@'localhost' to database 'mysqltest_1'
|
||||
update mysqltest_2.t1, mysqltest_1.t2 set c=100,b=200;
|
||||
ERROR 42000: Access denied for user 'mysqltest_3'@'localhost' to database 'mysqltest_1'
|
||||
update mysqltest_1.t1, mysqltest_2.t2 set a=100,d=200;
|
||||
ERROR 42000: Access denied for user 'mysqltest_3'@'localhost' to database 'mysqltest_1'
|
||||
select t1.*,t2.* from mysqltest_1.t1,mysqltest_1.t2;
|
||||
a q b r
|
||||
10 2 1 2
|
||||
select t1.*,t2.* from mysqltest_2.t1,mysqltest_2.t2;
|
||||
c s d t
|
||||
500 2 600 2
|
||||
delete from mysql.user where user='mysqltest_3';
|
||||
delete from mysql.db where user="mysqltest_3";
|
||||
delete from mysql.tables_priv where user="mysqltest_3";
|
||||
delete from mysql.columns_priv where user="mysqltest_3";
|
||||
flush privileges;
|
||||
drop database mysqltest_1;
|
||||
drop database mysqltest_2;
|
||||
|
@ -1688,6 +1688,9 @@ a b
|
||||
1003 duplicate three
|
||||
1004 duplicate four
|
||||
delete from t1 where a >= 1000 ;
|
||||
set @1=1 ;
|
||||
set @2=2 ;
|
||||
set @100=100 ;
|
||||
set @float=1.00;
|
||||
set @five='five' ;
|
||||
drop table if exists t2;
|
||||
|
@ -1671,6 +1671,9 @@ a b
|
||||
1003 duplicate three
|
||||
1004 duplicate four
|
||||
delete from t1 where a >= 1000 ;
|
||||
set @1=1 ;
|
||||
set @2=2 ;
|
||||
set @100=100 ;
|
||||
set @float=1.00;
|
||||
set @five='five' ;
|
||||
drop table if exists t2;
|
||||
|
@ -1672,6 +1672,9 @@ a b
|
||||
1003 duplicate three
|
||||
1004 duplicate four
|
||||
delete from t1 where a >= 1000 ;
|
||||
set @1=1 ;
|
||||
set @2=2 ;
|
||||
set @100=100 ;
|
||||
set @float=1.00;
|
||||
set @five='five' ;
|
||||
drop table if exists t2;
|
||||
|
@ -1671,6 +1671,9 @@ a b
|
||||
1003 duplicate three
|
||||
1004 duplicate four
|
||||
delete from t1 where a >= 1000 ;
|
||||
set @1=1 ;
|
||||
set @2=2 ;
|
||||
set @100=100 ;
|
||||
set @float=1.00;
|
||||
set @five='five' ;
|
||||
drop table if exists t2;
|
||||
|
@ -1671,6 +1671,9 @@ a b
|
||||
1003 duplicate three
|
||||
1004 duplicate four
|
||||
delete from t1 where a >= 1000 ;
|
||||
set @1=1 ;
|
||||
set @2=2 ;
|
||||
set @100=100 ;
|
||||
set @float=1.00;
|
||||
set @five='five' ;
|
||||
drop table if exists t2;
|
||||
|
@ -1,6 +1,7 @@
|
||||
# Let's see if FLUSH TABLES WITH READ LOCK blocks COMMIT of existing
|
||||
# transactions.
|
||||
# We verify that we did not introduce a deadlock.
|
||||
# This is intended to mimick how mysqldump and innobackup work.
|
||||
|
||||
-- source include/have_innodb.inc
|
||||
|
||||
@ -63,4 +64,11 @@ unlock tables;
|
||||
connection con2;
|
||||
flush tables with read lock; # bug caused hang here
|
||||
unlock tables;
|
||||
|
||||
# BUG#7358 SHOW CREATE DATABASE fails if open transaction
|
||||
|
||||
begin;
|
||||
select * from t1;
|
||||
show create database test;
|
||||
|
||||
drop table t1;
|
||||
|
@ -5,6 +5,8 @@
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
connect (master,localhost,root,,);
|
||||
connection master;
|
||||
SET NAMES binary;
|
||||
|
||||
#
|
||||
@ -280,3 +282,73 @@ show grants for grant_user@localhost;
|
||||
select Host,Db,User,Table_name,Column_name,Column_priv from mysql.columns_priv;
|
||||
drop user grant_user@localhost;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#7391: Cross-database multi-table UPDATE security problem
|
||||
#
|
||||
create database mysqltest_1;
|
||||
create database mysqltest_2;
|
||||
create table mysqltest_1.t1 select 1 a, 2 q;
|
||||
create table mysqltest_1.t2 select 1 b, 2 r;
|
||||
create table mysqltest_2.t1 select 1 c, 2 s;
|
||||
create table mysqltest_2.t2 select 1 d, 2 t;
|
||||
|
||||
#test the column privileges
|
||||
grant update (a) on mysqltest_1.t1 to mysqltest_3@localhost;
|
||||
grant select (b) on mysqltest_1.t2 to mysqltest_3@localhost;
|
||||
grant select (c) on mysqltest_2.t1 to mysqltest_3@localhost;
|
||||
grant update (d) on mysqltest_2.t2 to mysqltest_3@localhost;
|
||||
connect (conn1,localhost,mysqltest_3,,);
|
||||
connection conn1;
|
||||
show grants for mysqltest_3@localhost;
|
||||
--error 1143
|
||||
update mysqltest_1.t1, mysqltest_1.t2 set q=10 where b=1;
|
||||
--error 1143
|
||||
update mysqltest_1.t1, mysqltest_2.t2 set d=20 where d=1;
|
||||
--error 1143
|
||||
update mysqltest_2.t1, mysqltest_1.t2 set c=20 where b=1;
|
||||
--error 1143
|
||||
update mysqltest_2.t1, mysqltest_2.t2 set d=10 where s=2;
|
||||
#the following two should work
|
||||
update mysqltest_1.t1, mysqltest_2.t2 set a=10,d=10;
|
||||
update mysqltest_1.t1, mysqltest_2.t1 set a=20 where c=20;
|
||||
connection master;
|
||||
select t1.*,t2.* from mysqltest_1.t1,mysqltest_1.t2;
|
||||
select t1.*,t2.* from mysqltest_2.t1,mysqltest_2.t2;
|
||||
revoke all on mysqltest_1.t1 from mysqltest_3@localhost;
|
||||
revoke all on mysqltest_1.t2 from mysqltest_3@localhost;
|
||||
revoke all on mysqltest_2.t1 from mysqltest_3@localhost;
|
||||
revoke all on mysqltest_2.t2 from mysqltest_3@localhost;
|
||||
|
||||
#test the db/table level privileges
|
||||
grant all on mysqltest_2.* to mysqltest_3@localhost;
|
||||
grant select on *.* to mysqltest_3@localhost;
|
||||
flush privileges;
|
||||
disconnect conn1;
|
||||
connect (conn2,localhost,mysqltest_3,,);
|
||||
connection conn2;
|
||||
use mysqltest_1;
|
||||
update mysqltest_2.t1, mysqltest_2.t2 set c=500,d=600;
|
||||
# the following failed before, should fail now.
|
||||
--error 1143
|
||||
update mysqltest_1.t1, mysqltest_1.t2 set a=100,b=200;
|
||||
use mysqltest_2;
|
||||
#the following used to succeed, it must fail now.
|
||||
--error 1044
|
||||
update mysqltest_1.t1, mysqltest_1.t2 set a=100,b=200;
|
||||
--error 1044
|
||||
update mysqltest_2.t1, mysqltest_1.t2 set c=100,b=200;
|
||||
--error 1044
|
||||
update mysqltest_1.t1, mysqltest_2.t2 set a=100,d=200;
|
||||
#lets see the result
|
||||
connection master;
|
||||
select t1.*,t2.* from mysqltest_1.t1,mysqltest_1.t2;
|
||||
select t1.*,t2.* from mysqltest_2.t1,mysqltest_2.t2;
|
||||
|
||||
delete from mysql.user where user='mysqltest_3';
|
||||
delete from mysql.db where user="mysqltest_3";
|
||||
delete from mysql.tables_priv where user="mysqltest_3";
|
||||
delete from mysql.columns_priv where user="mysqltest_3";
|
||||
flush privileges;
|
||||
drop database mysqltest_1;
|
||||
drop database mysqltest_2;
|
||||
|
Reference in New Issue
Block a user