Commit fbb2fd3e authored by unknown's avatar unknown
Browse files

Merge mysql.com:/usr/local/bk/mysql-5.0

into  mysql.com:/usr/home/pem/bug14256/mysql-5.0


mysql-test/r/view.result:
  Auto merged
mysql-test/r/view_grant.result:
  Merge fix.
mysql-test/t/view_grant.test:
  Merge fix.
parents bbaf530f 25d1e014
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2198,7 +2198,7 @@ r_object_id users_names
120001a080000542	guser02
drop view v1, v2;
drop table t1, t2;
create definer=some_user@__% sql security invoker view v1 as select 1;
create definer=some_user@`` sql security invoker view v1 as select 1;
ERROR HY000: View definer is not fully qualified
create definer=some_user@localhost sql security invoker view v1 as select 1;
Warnings:
+27 −0
Original line number Diff line number Diff line
@@ -474,3 +474,30 @@ drop table t1;
use test;
REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost;
drop database mysqltest;
drop view if exists v1;
create table t1 as select * from mysql.user where user='';
delete from mysql.user where user='';
flush privileges;
grant all on test.* to 'test14256'@'%';
use test;
create view v1 as select 42;
show create view v1;
View	Create View
v1	CREATE ALGORITHM=UNDEFINED DEFINER=`test14256`@`%` SQL SECURITY DEFINER VIEW `v1` AS select 42 AS `42`
select definer into @v1def1 from information_schema.views
where table_schema = 'test' and table_name='v1';
drop view v1;
create definer=`test14256`@`%` view v1 as select 42;
show create view v1;
View	Create View
v1	CREATE ALGORITHM=UNDEFINED DEFINER=`test14256`@`%` SQL SECURITY DEFINER VIEW `v1` AS select 42 AS `42`
select definer into @v1def2 from information_schema.views
where table_schema = 'test' and table_name='v1';
drop view v1;
select @v1def1, @v1def2, @v1def1=@v1def2;
@v1def1	@v1def2	@v1def1=@v1def2
test14256@%	test14256@%	1
drop user test14256;
insert into mysql.user select * from t1;
flush privileges;
drop table t1;
+1 −1
Original line number Diff line number Diff line
@@ -2082,7 +2082,7 @@ drop table t1, t2;
# DEFINER information check
#
-- error ER_NO_VIEW_USER
create definer=some_user@__% sql security invoker view v1 as select 1;
create definer=some_user@`` sql security invoker view v1 as select 1;
create definer=some_user@localhost sql security invoker view v1 as select 1;
show create view v1;
drop view v1;
+45 −0
Original line number Diff line number Diff line
@@ -619,3 +619,48 @@ drop table t1;
use test;
REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost;
drop database mysqltest;

#
# BUG#14256: definer in view definition is not fully qualified
#
--disable_warnings
drop view if exists v1;
--enable_warnings

# Backup anonymous users and remove them. (They get in the way of
# the one we test with here otherwise.)
create table t1 as select * from mysql.user where user='';
delete from mysql.user where user='';
flush privileges;

# Create the test user
grant all on test.* to 'test14256'@'%';

connect (test14256,localhost,test14256,,test);
connection test14256;
use test;

create view v1 as select 42;
show create view v1;

select definer into @v1def1 from information_schema.views
  where table_schema = 'test' and table_name='v1';
drop view v1;

create definer=`test14256`@`%` view v1 as select 42;
show create view v1;

select definer into @v1def2 from information_schema.views
  where table_schema = 'test' and table_name='v1';
drop view v1;

select @v1def1, @v1def2, @v1def1=@v1def2;

connection root;
drop user test14256;

# Restore the anonymous users.
insert into mysql.user select * from t1;
flush privileges;

drop table t1;
+1 −2
Original line number Diff line number Diff line
@@ -9026,8 +9026,7 @@ view_user:
                  (LEX_USER*) thd->alloc(sizeof(st_lex_user))))
	      YYABORT;
	    view_user->user = $3; view_user->host=$5;
            if (strchr(view_user->host.str, wild_many) ||
                strchr(view_user->host.str, wild_one))
            if (view_user->host.length == 0)
            {
              my_error(ER_NO_VIEW_USER, MYF(0));
              YYABORT;