Commit 900d7bf3 authored by Sergei Golubchik's avatar Sergei Golubchik

Merge branch '10.5' into 10.6

parents 2ab52cc0 3a211624
......@@ -506,7 +506,7 @@ list_dbs(MYSQL *mysql,const char *wild)
MYSQL_RES *tresult = mysql_list_tables(mysql,(char*)NULL);
if (mysql_affected_rows(mysql) > 0)
{
sprintf(tables,"%6lu",(ulong) mysql_affected_rows(mysql));
snprintf(tables, sizeof(tables), "%6lu",(ulong) mysql_affected_rows(mysql));
rowcount = 0;
if (opt_verbose > 1)
{
......@@ -527,13 +527,13 @@ list_dbs(MYSQL *mysql,const char *wild)
}
}
}
sprintf(rows,"%12lu",rowcount);
snprintf(rows, sizeof(rows), "%12lu", rowcount);
}
}
else
{
sprintf(tables,"%6d",0);
sprintf(rows,"%12d",0);
snprintf(tables, sizeof(tables), "%6d" ,0);
snprintf(rows, sizeof(rows), "%12d", 0);
}
mysql_free_result(tresult);
}
......@@ -651,7 +651,7 @@ list_tables(MYSQL *mysql,const char *db,const char *table)
}
else
{
sprintf(fields,"%8u",(uint) mysql_num_fields(rresult));
snprintf(fields, sizeof(fields), "%8u", (uint) mysql_num_fields(rresult));
mysql_free_result(rresult);
if (opt_verbose > 1)
......@@ -667,10 +667,10 @@ list_tables(MYSQL *mysql,const char *db,const char *table)
rowcount += (unsigned long) strtoull(rrow[0], (char**) 0, 10);
mysql_free_result(rresult);
}
sprintf(rows,"%10lu",rowcount);
snprintf(rows, sizeof(rows), "%10lu", rowcount);
}
else
sprintf(rows,"%10d",0);
snprintf(rows, sizeof(rows), "%10d", 0);
}
}
}
......
......@@ -956,6 +956,17 @@ extern ulonglong my_getcputime(void);
#define hrtime_sec_part(X) ((ulong)((X).val % HRTIME_RESOLUTION))
#define my_time(X) hrtime_to_time(my_hrtime_coarse())
/**
Make high resolution time from two parts.
*/
static inline my_hrtime_t make_hr_time(my_time_t time, ulong time_sec_part)
{
my_hrtime_t res= {((ulonglong) time)*1000000 + time_sec_part};
return res;
}
#if STACK_DIRECTION < 0
#define available_stack_size(CUR,END) (long) ((char*)(CUR) - (char*)(END))
#else
......
......@@ -11,11 +11,11 @@ CREATE USER u1@localhost;
grant ALL on db.v1 to u1@localhost;
connect con1,localhost,u1,,;
select * from db.t1;
ERROR 42000: SELECT command denied to user 'u1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'u1'@'localhost' for table `db`.`t1`
explain select * from db.t1;
ERROR 42000: SELECT command denied to user 'u1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'u1'@'localhost' for table `db`.`t1`
analyze select * from db.t1;
ERROR 42000: SELECT command denied to user 'u1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'u1'@'localhost' for table `db`.`t1`
select * from db.v1;
i c
2 bar
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -8,7 +8,7 @@ drop table if exists t1;
# Add the datadir to the bootstrap command
let $MYSQLD_DATADIR= `select @@datadir`;
let $MYSQLD_BOOTSTRAP_CMD= $MYSQLD_BOOTSTRAP_CMD --datadir=$MYSQLD_DATADIR --default-storage-engine=MyISAM --loose-skip-innodb --plugin-maturity=unknown;
let $MYSQLD_BOOTSTRAP_CMD= $MYSQLD_BOOTSTRAP_CMD --datadir=$MYSQLD_DATADIR --tmpdir=$MYSQL_TMP_DIR --default-storage-engine=MyISAM --loose-skip-innodb --plugin-maturity=unknown;
#
# Check that --bootstrap reads from stdin
#
......
......@@ -19,7 +19,7 @@ rollback to savepoint s1;
insert t1 values (5);
commit;
EOF
exec $MYSQLD_BOOTSTRAP_CMD --datadir=$datadir --innodb < $MYSQLTEST_VARDIR/tmp/bootstrap_test.sql >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1;
exec $MYSQLD_BOOTSTRAP_CMD --datadir=$datadir --tmpdir=$MYSQL_TMP_DIR --innodb < $MYSQLTEST_VARDIR/tmp/bootstrap_test.sql >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1;
remove_file $MYSQLTEST_VARDIR/tmp/bootstrap_test.sql;
source include/start_mysqld.inc;
......
......@@ -32,7 +32,7 @@ CREATE OR REPLACE DATABASE db2;
ERROR 42000: Access denied for user 'mysqltest_1'@'localhost' to database 'db2'
USE db1;
CREATE OR REPLACE TABLE t1(id INT);
ERROR 42000: DROP command denied to user 'mysqltest_1'@'localhost' for table 't1'
ERROR 42000: DROP command denied to user 'mysqltest_1'@'localhost' for table `db1`.`t1`
CREATE OR REPLACE PROCEDURE proc1 (OUT cnt INT) BEGIN END;
ERROR 42000: alter routine command denied to user 'mysqltest_1'@'localhost' for routine 'db1.proc1'
CREATE OR REPLACE FUNCTION lookup RETURNS STRING SONAME "UDF_EXAMPLE_LIB";
......
......@@ -51,7 +51,7 @@ c
select d from mysqltest.v2;
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for column 'd' in table 'v2'
select * from mysqltest.v3;
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'v3'
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v3`
connection root;
grant select on mysqltest.v3 to mysqltest_1@localhost;
connection user1;
......@@ -116,7 +116,7 @@ revoke SELECT on db.t1 from foo@localhost;
connection con1;
with cte as (select * from t1 where i < 4)
select * from cte;
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table `db`.`t1`
disconnect con1;
connection default;
drop database db;
......
......@@ -39,7 +39,7 @@ cte3 AS
cte4 AS
(SELECT cte2.a FROM t2,cte2 WHERE cte2.a = t2.a)
SELECT * FROM cte4 as r;
ERROR 42000: SELECT command denied to user 'u1'@'localhost' for table 't2'
ERROR 42000: SELECT command denied to user 'u1'@'localhost' for table `db`.`t2`
disconnect u1;
connection default;
DROP USER 'u1'@'localhost';
......
......@@ -5016,6 +5016,592 @@ t2 CREATE TABLE `t2` (
set @@sql_mode=default;
drop table t1,t2;
#
# MDEV-29361: Embedded recursive / non-recursive CTE within
# the scope of another embedded CTE with the same name
#
create table t1 (a int);
insert into t1 values (4), (5);
create table t2 (a int);
insert into t2 values (6), (8);
create table t3 (a int);
insert into t3 values (1), (9);
with recursive
x as
(
select a from t1 union select a+1 from x as r1 where a < 7
)
select * from x as s1;
a
4
5
6
7
with recursive
x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x as s2;
a
6
8
10
with
cte as
(
with recursive
x as
(
select a from t1 union select a+1 from x as r1 where a < 7
)
select * from x as s1
where s1.a in (
with recursive
x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x as s2
)
)
select * from cte;
a
6
with
cte as
(
with recursive
x(a) as
(
select a from t1 union select a+1 from x as r1 where a < 7
)
select s1.a from x as s1, x
where s1.a = x.a and
x.a in (
with recursive
x(a) as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x as s2
)
)
select * from cte;
a
6
with
cte as
(
with
x as
(
select a from t1 union select a+1 from x as r1 where a < 7
)
select * from x as s1
where s1.a in (
with recursive
x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x as s2
)
)
select * from cte;
ERROR 42S02: Table 'test.x' doesn't exist
with
cte as
(
with recursive
x as
(
select a from t1 union select a+1 from x as r1 where a < 7
)
select * from x as s1
where s1.a in (
with
x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x as s2
)
)
select * from cte;
a
6
7
with
cte as
(
with
x as
(
select a from t1 union select a+1 from x as r1 where a < 7
)
select * from x as s1
where s1.a in (
with
x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x as s2
)
)
select * from cte;
ERROR 42S02: Table 'test.x' doesn't exist
with
cte as
(
with recursive
y as
(
select a from t1 union select a+1 from y as r1 where a < 7
)
select * from y as s1
where s1.a in (
with
x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x as s2
)
)
select * from cte;
ERROR 42S02: Table 'test.x' doesn't exist
with
cte as
(
with
y(a) as
(
select a+5 from t1
)
select * from y as s1
where s1.a in (
with
x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x as s2
)
)
select * from cte;
ERROR 42S02: Table 'test.x' doesn't exist
with
cte as
(
select (
with
x as
(
select a from x as r1
)
select * from x as s1
where s1.a in (
with recursive
x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x as s2
)
) as r
from t3
)
select * from cte;
ERROR 42S02: Table 'test.x' doesn't exist
with
cte as
(
select (
with
x as
(
select a from x as r1
)
select * from x as s1
where s1.a < 5 and
s1.a in (
with
x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x as s2
)
) as r
from t3
)
select * from cte;
ERROR 42S02: Table 'test.x' doesn't exist
with
cte as
(
select (
with recursive
x(a) as
(
select a+3 from t1 union select a+1 from x as r1 where a < 7
)
select * from x as s1
where s1.a < 8 and
s1.a in (
with recursive
x(a) as
(
select a-2 from t2
union
select a+1 from x as r2 where a < 10
)
select a from x as s2
)
) as r
from t3
)
select * from cte;
r
7
7
with
cte as
(
select (
with recursive
x as
(
select a from t1 union select a+1 from x as r1 where a < 7
)
select * from x as s1
where s1.a in (
with recursive
x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x as s2
)
) as r
from t3
)
select * from cte;
r
6
6
create table x (a int);
insert into x values (3), (7), (1), (5), (6);
with
cte as
(
select (
with
x as
(
select ( select a from x as r1 ) as a from t1
)
select * from x as s1
where s1.a in (
with recursive
x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x s2
)
) as r
from t3
)
select * from cte;
ERROR 21000: Subquery returns more than 1 row
with
cte as
(
select (
with
x as
(
select ( select a from x ) as a from t1
)
select exists (
with recursive
x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x
)
) as r
from t3
)
select * from cte;
r
1
1
with
cte_e as
(
with
cte as
(
select (
with
x as
(
select ( select a from x ) from t1
)
select exists (
with recursive
x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x
)
) as r
from t3
)
select * from cte
)
select s1.*, s2.* from cte_e as s1, cte_e as s2;
r r
1 1
1 1
1 1
1 1
with
x as
(
select a from t1 union select a+1 from x as r1 where a < 7
)
select * from x as s1;
a
4
5
2
6
7
with
x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x as s2;
a
6
8
5
9
3
7
with recursive
x as
(
select a from t1 union select a+1 from x as r1 where a < 7
)
select * from x as s1;
a
4
5
6
7
with recursive
x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x as s2;
a
6
8
10
with
cte as
(
with
x as
(
select a from t1 union select a+1 from x as r1 where a < 7
)
select * from x as s1
where s1.a in (
with recursive
x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x as s2
)
)
select * from cte;
a
6
with
cte as
(
with
x as
(
select a from t1 union select a+1 from x as r1 where a < 7
)
select * from x as s1
where s1.a in (
with
x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x as s2
)
)
select * from cte;
a
4
6
7
with
cte as
(
with recursive
y as
(
select a from t1 union select a+1 from y as r1 where a < 7
)
select * from y as s1
where s1.a in (
with
x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x as s2
)
)
select * from cte;
a
5
6
7
with
cte as
(
with
y(a) as
(
select a+5 from t1
)
select * from y as s1
where s1.a in (
with
x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x as s2
)
)
select * from cte;
a
9
with
cte as
(
select (
with
x as
(
select a from x as r1
)
select * from x as s1
where s1.a in (
with
recursive x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x as s2
)
) as r
from t3
)
select * from cte;
r
6
6
with
cte as
(
select (
with
x as
(
select a from x as r1
)
select * from x as s1
where s1.a < 5 and
s1.a in (
with
x as
(
select a from t2
union
select a+2 from x as r2 where a < 10
)
select a from x as s2
)
) as r
from t3
)
select * from cte;
r
3
3
drop table t1,t2,t3,x;
#
# End of 10.3 tests
#
#
......
This diff is collapsed.
......@@ -30,7 +30,7 @@ disconnect con1;
connection default;
connect con1, localhost, user5;
FLUSH TABLE db1.t1 FOR EXPORT;
ERROR 42000: SELECT command denied to user 'user5'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user5'@'localhost' for table `db1`.`t1`
disconnect con1;
connection default;
DROP USER user1@localhost, user2@localhost, user3@localhost,
......
......@@ -38,13 +38,13 @@ CREATE VIEW v2 AS SELECT * FROM performance_schema.accounts;
FLUSH TABLE information_schema.collations WITH READ LOCK;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
FLUSH TABLE performance_schema.accounts WITH READ LOCK;
ERROR 42000: SELECT, LOCK TABLES command denied to user 'root'@'localhost' for table 'accounts'
ERROR 42000: SELECT, LOCK TABLES command denied to user 'root'@'localhost' for table `performance_schema`.`accounts`
FLUSH TABLE information_schema.colums WITH READ LOCK;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
FLUSH TABLE information_schema.collations FOR EXPORT;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
FLUSH TABLE performance_schema.accounts FOR EXPORT;
ERROR 42000: SELECT, LOCK TABLES command denied to user 'root'@'localhost' for table 'accounts'
ERROR 42000: SELECT, LOCK TABLES command denied to user 'root'@'localhost' for table `performance_schema`.`accounts`
FLUSH TABLE information_schema.colums FOR EXPORT;
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
#
......
......@@ -39,7 +39,7 @@ create user foo@localhost;
grant execute on mysql.* to foo@localhost;
connect foo, localhost, foo;
call mysql.AddGeometryColumn('', 'mysql', 'proc', 'c', 10);
ERROR 42000: ALTER command denied to user 'foo'@'localhost' for table 'proc'
ERROR 42000: ALTER command denied to user 'foo'@'localhost' for table `mysql`.`proc`
disconnect foo;
connection default;
drop user foo@localhost;
This diff is collapsed.
......@@ -108,9 +108,9 @@ GRANT USAGE ON *.* TO `mysqltest_1`@`localhost`
GRANT SELECT, INSERT ON `mysqltest`.* TO `mysqltest_1`@`localhost`
insert into t1 values (1, 'I can''t change it!');
update t1 set data='I can change it!' where id = 1;
ERROR 42000: UPDATE command denied to user 'mysqltest_1'@'localhost' for table 't1'
ERROR 42000: UPDATE command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`t1`
insert into t1 values (1, 'XXX') on duplicate key update data= 'I can change it!';
ERROR 42000: UPDATE command denied to user 'mysqltest_1'@'localhost' for table 't1'
ERROR 42000: UPDATE command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`t1`
select * from t1;
id data
1 I can't change it!
......@@ -127,7 +127,7 @@ connection mrugly;
grant select (a,b) on t1 to mysqltest_2@localhost;
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for column 'b' in table 't1'
grant select on t1 to mysqltest_3@localhost;
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`t1`
disconnect mrugly;
connection default;
drop table t1;
......@@ -312,7 +312,7 @@ grant create user on *.* to mysqltest_2@localhost;
connect user3,localhost,mysqltest_2,,;
connection user3;
select host,user,password,plugin,authentication_string from mysql.user where user like 'mysqltest_%' ;
ERROR 42000: SELECT command denied to user 'mysqltest_2'@'localhost' for table 'user'
ERROR 42000: SELECT command denied to user 'mysqltest_2'@'localhost' for table `mysql`.`user`
create user mysqltest_A@'%';
rename user mysqltest_A@'%' to mysqltest_B@'%';
drop user mysqltest_B@'%';
......@@ -328,7 +328,7 @@ Grants for mysqltest_3@localhost
GRANT USAGE ON *.* TO `mysqltest_3`@`localhost`
GRANT INSERT, UPDATE, DELETE ON `mysql`.* TO `mysqltest_3`@`localhost`
select host,user,password,plugin,authentication_string from mysql.user where user like 'mysqltest_%' ;
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for table 'user'
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for table `mysql`.`user`
insert into mysql.global_priv set host='%', user='mysqltest_B';
create user mysqltest_A@'%';
rename user mysqltest_B@'%' to mysqltest_C@'%';
......@@ -476,9 +476,9 @@ create table t1 (i int);
connect user1,localhost,mysqltest_u1,,mysqltest_1;
connection user1;
show create table mysqltest_2.t1;
ERROR 42000: SHOW command denied to user 'mysqltest_u1'@'localhost' for table 't1'
ERROR 42000: SHOW command denied to user 'mysqltest_u1'@'localhost' for table `mysqltest_2`.`t1`
create table t1 like mysqltest_2.t1;
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table `mysqltest_2`.`t1`
connection default;
grant select on mysqltest_2.t1 to mysqltest_u1@localhost;
connection user1;
......@@ -533,7 +533,7 @@ USE db1;
SELECT c FROM t2;
ERROR 42000: SELECT command denied to user 'mysqltest1'@'localhost' for column 'c' in table 't2'
SELECT * FROM t2;
ERROR 42000: SELECT command denied to user 'mysqltest1'@'localhost' for table 't2'
ERROR 42000: SELECT command denied to user 'mysqltest1'@'localhost' for table `db1`.`t2`
SELECT * FROM t1 JOIN t2 USING (b);
ERROR 42000: SELECT command denied to user 'mysqltest1'@'localhost' for column 'c' in table 't2'
connection default;
......@@ -629,7 +629,7 @@ CREATE TEMPORARY TABLE t4 SELECT * FROM t1;
# temporary table without additional privileges.
CREATE TEMPORARY TABLE t5(a INT) ENGINE = MyISAM;
CREATE TEMPORARY TABLE t6(a INT) ENGINE = MERGE UNION = (t5);
ERROR 42000: SELECT, UPDATE, DELETE command denied to user 'mysqltest_u1'@'localhost' for table 't5'
ERROR 42000: SELECT, UPDATE, DELETE command denied to user 'mysqltest_u1'@'localhost' for table `mysqltest_db1`.`t5`
# Check that we allow creation of MERGE table with no underlying table
# without additional privileges.
CREATE TEMPORARY TABLE t6(a INT) ENGINE = MERGE UNION = ();
......@@ -657,7 +657,7 @@ ALTER TABLE t6 UNION = ();
# Check that we do *not* allow altering of MERGE table with underlying
# temporary table without additional privileges.
ALTER TABLE t6 UNION = (t5);
ERROR 42000: SELECT, UPDATE, DELETE command denied to user 'mysqltest_u1'@'localhost' for table 't5'
ERROR 42000: SELECT, UPDATE, DELETE command denied to user 'mysqltest_u1'@'localhost' for table `mysqltest_db1`.`t5`
#
# Simple INSERT and INSERT ... SELECT.
#
......@@ -902,7 +902,7 @@ CREATE TEMPORARY TABLE t9(a INT);
CREATE TEMPORARY TABLE t10(a INT) ENGINE = MERGE UNION = (t7, t8);
ALTER TABLE t10 UNION = (t9);
ALTER TABLE t10 UNION = (mysqltest_db2.t2_1);
ERROR 42000: SELECT, UPDATE, DELETE command denied to user 'mysqltest_u5'@'localhost' for table 't2_1'
ERROR 42000: SELECT, UPDATE, DELETE command denied to user 'mysqltest_u5'@'localhost' for table `mysqltest_db2`.`t2_1`
CREATE TEMPORARY TABLE mysqltest_db2.t2_2(a INT) ENGINE = MERGE UNION = (t7, t8);
ALTER TABLE mysqltest_db2.t2_2 UNION = (t9);
ALTER TABLE mysqltest_db2.t2_2 UNION = ();
......
......@@ -30,23 +30,23 @@ a int(11) YES NULL
** SHOW COLUMNS
** Should fail because there are no privileges on any column combination.
show columns from mysqltest_db1.t_no_priv;
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't_no_priv'
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table `mysqltest_db1`.`t_no_priv`
** However, select from I_S.COLUMNS will succeed but not show anything:
select column_name as 'Field',column_type as 'Type',is_nullable as 'Null',column_key as 'Key',column_default as 'Default',extra as 'Extra' from information_schema.columns where table_schema='mysqltest_db1' and table_name='t_no_priv';
Field Type Null Key Default Extra
** CREATE TABLE ... LIKE ... require SELECT privleges and will fail.
create table test.t_no_priv like mysqltest_db1.column_priv_only;
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 'column_priv_only'
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table `mysqltest_db1`.`column_priv_only`
** Just to be sure... SELECT also fails.
select * from mysqltest_db1.t_column_priv_only;
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't_column_priv_only'
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table `mysqltest_db1`.`t_column_priv_only`
** SHOW CREATE TABLE ... require any privileges on all columns (the entire table).
** First we try and fail on a table with only one column privilege.
show create table mysqltest_db1.t_column_priv_only;
ERROR 42000: SHOW command denied to user 'mysqltest_u1'@'localhost' for table 't_column_priv_only'
ERROR 42000: SHOW command denied to user 'mysqltest_u1'@'localhost' for table `mysqltest_db1`.`t_column_priv_only`
** Now we do the same on a table with SELECT privileges.
......@@ -72,7 +72,7 @@ t_select_priv CREATE TABLE `t_select_priv` (
** SHOW CREATE TABLE will fail if there is no grants at all:
show create table mysqltest_db1.t_no_priv;
ERROR 42000: SHOW command denied to user 'mysqltest_u1'@'localhost' for table 't_no_priv'
ERROR 42000: SHOW command denied to user 'mysqltest_u1'@'localhost' for table `mysqltest_db1`.`t_no_priv`
connection default;
use mysqltest_db1;
......@@ -97,7 +97,7 @@ SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE table_name='t5';
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT INDEX_COMMENT IGNORED
** SHOW INDEX FROM t5 will fail because we don't have any privileges on any column combination.
SHOW INDEX FROM t5;
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't5'
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table `mysqltest_db1`.`t5`
** SHOW INDEX FROM t6 will succeed because there exist a privilege on a column combination on t6.
SHOW INDEX FROM t6;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Ignored
......@@ -108,20 +108,20 @@ Table Op Msg_type Msg_text
mysqltest_db1.t6 check status OK
** With no privileges access is naturally denied:
CHECK TABLE t5;
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't5'
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table `mysqltest_db1`.`t5`
** CHECKSUM TABLE requires SELECT privileges on the table. The following should fail:
CHECKSUM TABLE t6;
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't6'
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table `mysqltest_db1`.`t6`
** And this should work:
CHECKSUM TABLE t_select_priv;
Table Checksum
mysqltest_db1.t_select_priv 0
SHOW CREATE VIEW v5;
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 'v5'
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table `mysqltest_db1`.`v5`
SHOW CREATE VIEW v6;
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 'v6'
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table `mysqltest_db1`.`v6`
SHOW CREATE VIEW v2;
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 'v2'
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table `mysqltest_db1`.`v2`
SHOW CREATE VIEW v3;
View Create View character_set_client collation_connection
v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v3` AS select `t_select_priv`.`a` AS `a`,`t_select_priv`.`b` AS `b` from `t_select_priv` latin1 latin1_swedish_ci
......@@ -193,10 +193,10 @@ mysqltest_db1.t1 check error Corrupt
# The below statement should fail before repairing t1.
# Otherwise info about such repair will be missing from its result-set.
repair table mysqltest_db1.t1, mysqltest_db1.t2;
ERROR 42000: SELECT, INSERT command denied to user 'mysqltest_u1'@'localhost' for table 't2'
ERROR 42000: SELECT, INSERT command denied to user 'mysqltest_u1'@'localhost' for table `mysqltest_db1`.`t2`
# The same is true for CHECK TABLE statement.
check table mysqltest_db1.t1, mysqltest_db1.t2;
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't2'
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table `mysqltest_db1`.`t2`
check table mysqltest_db1.t1;
Table Op Msg_type Msg_text
mysqltest_db1.t1 check warning Table is marked as crashed
......
......@@ -185,6 +185,67 @@ GRANT USAGE ON *.* TO `test-user`@`%`
SET DEFAULT ROLE `r``o'l"e` FOR `test-user`@`%`
DROP ROLE `r``o'l"e`;
DROP USER 'test-user';
#
# MDEV-28548: ER_TABLEACCESS_DENIED_ERROR is missing information about DB
#
create database db1;
create user foo@localhost;
grant create on db1.* to foo@localhost;
connect con1,localhost,foo,,db1;
create table t(t int);
show columns in t;
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table `db1`.`t`
show columns in db1.t;
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table `db1`.`t`
create view t_v as select * from t;
ERROR 42000: CREATE VIEW command denied to user 'foo'@'localhost' for table `db1`.`t_v`
show create view t_v;
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table `db1`.`t_v`
create table t2(id int primary key, b int);
create table t3(a int, b int, CONSTRAINT `fk_db2_db1_t1`
FOREIGN KEY (a)
REFERENCES `db1 `.t1 (a)
ON DELETE CASCADE
ON UPDATE RESTRICT);
ERROR 42000: Incorrect database name 'db1 '
create table t3(a int, b int, CONSTRAINT `fk_db2_db3_t1`
FOREIGN KEY (a)
REFERENCES db3.t1 (a)
ON DELETE CASCADE
ON UPDATE RESTRICT);
ERROR 42000: REFERENCES command denied to user 'foo'@'localhost' for table `db3`.`t1`
create table t1(a int, b int, CONSTRAINT `fk_db2_db3_t1`
FOREIGN KEY (a)
REFERENCES t2 (id)
ON DELETE CASCADE
ON UPDATE RESTRICT);
ERROR 42000: REFERENCES command denied to user 'foo'@'localhost' for table `db1`.`t2`
connection default;
disconnect con1;
grant create view, select on db1.* to foo@localhost;
connect con1,localhost,foo,,db1;
create view t_v as select * from t;
show grants;
Grants for foo@localhost
GRANT USAGE ON *.* TO `foo`@`localhost`
GRANT SELECT, CREATE, CREATE VIEW ON `db1`.* TO `foo`@`localhost`
show create view t_v;
ERROR 42000: SHOW VIEW command denied to user 'foo'@'localhost' for table `db1`.`t_v`
connection default;
disconnect con1;
grant show view on db1.* to foo@localhost;
connect con1,localhost,foo,,db1;
show grants;
Grants for foo@localhost
GRANT USAGE ON *.* TO `foo`@`localhost`
GRANT SELECT, CREATE, CREATE VIEW, SHOW VIEW ON `db1`.* TO `foo`@`localhost`
show create view t_v;
View Create View character_set_client collation_connection
t_v CREATE ALGORITHM=UNDEFINED DEFINER=`foo`@`localhost` SQL SECURITY DEFINER VIEW `t_v` AS select `t`.`t` AS `t` from `t` latin1 latin1_swedish_ci
connection default;
disconnect con1;
drop database db1;
drop user foo@localhost;
# End of 10.3 tests
create user u1@h identified with 'mysql_native_password' using 'pwd';
ERROR HY000: Password hash should be a 41-digit hexadecimal number
......
......@@ -138,6 +138,78 @@ SHOW GRANTS FOR 'test-user';
DROP ROLE `r``o'l"e`;
DROP USER 'test-user';
--echo #
--echo # MDEV-28548: ER_TABLEACCESS_DENIED_ERROR is missing information about DB
--echo #
create database db1;
create user foo@localhost;
grant create on db1.* to foo@localhost;
--connect (con1,localhost,foo,,db1)
create table t(t int);
--error ER_TABLEACCESS_DENIED_ERROR
show columns in t;
--error ER_TABLEACCESS_DENIED_ERROR
show columns in db1.t;
# CREATE_VIEW_ACL needed
--error ER_TABLEACCESS_DENIED_ERROR
create view t_v as select * from t;
# show create view needs to have SELECT_ACL and SHOW_VIEW_ACL
--error ER_TABLEACCESS_DENIED_ERROR
show create view t_v;
create table t2(id int primary key, b int);
# Reference non existing DB with wrong DB name
--error ER_WRONG_DB_NAME
create table t3(a int, b int, CONSTRAINT `fk_db2_db1_t1`
FOREIGN KEY (a)
REFERENCES `db1 `.t1 (a)
ON DELETE CASCADE
ON UPDATE RESTRICT);
# Reference non-existing DB (with qualified DB name)
--error ER_TABLEACCESS_DENIED_ERROR
create table t3(a int, b int, CONSTRAINT `fk_db2_db3_t1`
FOREIGN KEY (a)
REFERENCES db3.t1 (a)
ON DELETE CASCADE
ON UPDATE RESTRICT);
# Reference DB (with not qualified DB name)
--error ER_TABLEACCESS_DENIED_ERROR
create table t1(a int, b int, CONSTRAINT `fk_db2_db3_t1`
FOREIGN KEY (a)
REFERENCES t2 (id)
ON DELETE CASCADE
ON UPDATE RESTRICT);
--connection default
--disconnect con1
# Add CREATE_VIEW_ACL and SELECT_ACL
grant create view, select on db1.* to foo@localhost;
--connect (con1,localhost,foo,,db1)
create view t_v as select * from t;
show grants;
--error ER_TABLEACCESS_DENIED_ERROR
show create view t_v;
--connection default
--disconnect con1
# Add SHOW_VIEW_ACL
grant show view on db1.* to foo@localhost;
--connect (con1,localhost,foo,,db1)
show grants;
show create view t_v;
--connection default
--disconnect con1
drop database db1;
drop user foo@localhost;
--echo # End of 10.3 tests
#
......
......@@ -154,7 +154,7 @@ a b c a
1 1 1 test.t1
2 2 2 test.t1
select * from t2;
ERROR 42000: SELECT command denied to user 'mysqltest_2'@'localhost' for table 't2'
ERROR 42000: SELECT command denied to user 'mysqltest_2'@'localhost' for table `mysqltest`.`t2`
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 6
......@@ -170,7 +170,7 @@ select "user3";
user3
user3
select * from t1;
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for table `mysqltest`.`t1`
select a from t1;
a
1
......@@ -178,7 +178,7 @@ a
select c from t1;
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 'c' in table 't1'
select * from t2;
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for table 't2'
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for table `mysqltest`.`t2`
select mysqltest.t1.c from test.t1,mysqltest.t1;
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 'c' in table 't1'
show status like "Qcache_queries_in_cache";
......
......@@ -154,7 +154,7 @@ a b c a
1 1 1 test.t1
2 2 2 test.t1
select * from t2;
ERROR 42000: SELECT command denied to user 'mysqltest_2'@'localhost' for table 't2'
ERROR 42000: SELECT command denied to user 'mysqltest_2'@'localhost' for table `mysqltest`.`t2`
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 6
......@@ -170,7 +170,7 @@ select "user3";
user3
user3
select * from t1;
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for table `mysqltest`.`t1`
select a from t1;
a
1
......@@ -178,7 +178,7 @@ a
select c from t1;
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 'c' in table 't1'
select * from t2;
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for table 't2'
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for table `mysqltest`.`t2`
select mysqltest.t1.c from test.t1,mysqltest.t1;
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 'c' in table 't1'
show status like "Qcache_queries_in_cache";
......
......@@ -10,13 +10,13 @@ connect con1,localhost,privtest,,;
connection con1;
USE privtest_db;
EXPLAIN INSERT INTO t1 VALUES (10);
ERROR 42000: INSERT command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: INSERT command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
INSERT INTO t1 VALUES (10);
ERROR 42000: INSERT command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: INSERT command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
EXPLAIN INSERT INTO t1 SELECT * FROM t2;
ERROR 42000: INSERT command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: INSERT command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
INSERT INTO t1 SELECT * FROM t2;
ERROR 42000: INSERT command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: INSERT command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
connection default;
GRANT INSERT ON privtest_db.t1 TO 'privtest'@'localhost';
connection con1;
......@@ -32,36 +32,36 @@ connection default;
REVOKE ALL PRIVILEGES ON privtest_db.t1 FROM 'privtest'@'localhost';
connection con1;
EXPLAIN REPLACE INTO t1 VALUES (10);
ERROR 42000: INSERT, DELETE command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: INSERT, DELETE command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
REPLACE INTO t1 VALUES (10);
ERROR 42000: INSERT, DELETE command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: INSERT, DELETE command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
EXPLAIN REPLACE INTO t1 SELECT * FROM t2;
ERROR 42000: INSERT, DELETE command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: INSERT, DELETE command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
REPLACE INTO t1 SELECT * FROM t2;
ERROR 42000: INSERT, DELETE command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: INSERT, DELETE command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
connection default;
GRANT INSERT ON privtest_db.t1 TO 'privtest'@'localhost';
connection con1;
EXPLAIN REPLACE INTO t1 VALUES (10);
ERROR 42000: DELETE command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: DELETE command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
REPLACE INTO t1 VALUES (10);
ERROR 42000: DELETE command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: DELETE command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
EXPLAIN REPLACE INTO t1 SELECT * FROM t2;
ERROR 42000: DELETE command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: DELETE command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
REPLACE INTO t1 SELECT * FROM t2;
ERROR 42000: DELETE command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: DELETE command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
connection default;
REVOKE INSERT ON privtest_db.t1 FROM 'privtest'@'localhost';
GRANT DELETE ON privtest_db.t1 TO 'privtest'@'localhost';
connection con1;
EXPLAIN REPLACE INTO t1 VALUES (10);
ERROR 42000: INSERT command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: INSERT command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
REPLACE INTO t1 VALUES (10);
ERROR 42000: INSERT command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: INSERT command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
EXPLAIN REPLACE INTO t1 SELECT * FROM t2;
ERROR 42000: INSERT command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: INSERT command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
REPLACE INTO t1 SELECT * FROM t2;
ERROR 42000: INSERT command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: INSERT command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
connection default;
GRANT INSERT, DELETE ON privtest_db.t1 TO 'privtest'@'localhost';
connection con1;
......@@ -77,13 +77,13 @@ connection default;
REVOKE ALL PRIVILEGES ON privtest_db.t1 FROM 'privtest'@'localhost';
connection con1;
EXPLAIN UPDATE t1 SET a = a + 1;
ERROR 42000: UPDATE command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: UPDATE command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
UPDATE t1 SET a = a + 1;
ERROR 42000: UPDATE command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: UPDATE command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
EXPLAIN UPDATE t1, t2 SET t1.a = t1.a + 1 WHERE t1.a = t2.a;
ERROR 42000: SELECT command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
UPDATE t1, t2 SET t1.a = t1.a + 1 WHERE t1.a = t2.a;
ERROR 42000: SELECT command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
connection default;
GRANT UPDATE ON privtest_db.t1 TO 'privtest'@'localhost';
connection con1;
......@@ -100,13 +100,13 @@ REVOKE UPDATE ON privtest_db.t1 FROM 'privtest'@'localhost';
GRANT SELECT ON privtest_db.t1 TO 'privtest'@'localhost';
connection con1;
EXPLAIN UPDATE t1 SET a = a + 1;
ERROR 42000: UPDATE command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: UPDATE command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
UPDATE t1 SET a = a + 1;
ERROR 42000: UPDATE command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: UPDATE command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
EXPLAIN UPDATE t1, t2 SET t1.a = t1.a + 1 WHERE t1.a = t2.a;
ERROR 42000: UPDATE command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: UPDATE command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
UPDATE t1, t2 SET t1.a = t1.a + 1 WHERE t1.a = t2.a;
ERROR 42000: UPDATE command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: UPDATE command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
connection default;
GRANT UPDATE, SELECT ON privtest_db.t1 TO 'privtest'@'localhost';
connection con1;
......@@ -123,13 +123,13 @@ connection default;
REVOKE ALL PRIVILEGES ON privtest_db.t1 FROM 'privtest'@'localhost';
connection con1;
EXPLAIN DELETE FROM t1 WHERE a = 10;
ERROR 42000: DELETE command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: DELETE command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
DELETE FROM t1 WHERE a = 10;
ERROR 42000: DELETE command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: DELETE command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
EXPLAIN DELETE FROM t1 USING t1, t2 WHERE t1.a = t2.a;
ERROR 42000: SELECT command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
DELETE FROM t1 USING t1, t2 WHERE t1.a = t2.a;
ERROR 42000: SELECT command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
connection default;
GRANT DELETE ON privtest_db.t1 TO 'privtest'@'localhost';
connection con1;
......@@ -138,21 +138,21 @@ ERROR 42000: SELECT command denied to user 'privtest'@'localhost' for column 'a'
DELETE FROM t1 WHERE a = 10;
ERROR 42000: SELECT command denied to user 'privtest'@'localhost' for column 'a' in table 't1'
EXPLAIN DELETE FROM t1 USING t1, t2 WHERE t1.a = t2.a;
ERROR 42000: SELECT command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
DELETE FROM t1 USING t1, t2 WHERE t1.a = t2.a;
ERROR 42000: SELECT command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
connection default;
REVOKE ALL PRIVILEGES ON privtest_db.t1 FROM 'privtest'@'localhost';
GRANT SELECT ON privtest_db.t1 TO 'privtest'@'localhost';
connection con1;
EXPLAIN DELETE FROM t1 WHERE a = 10;
ERROR 42000: DELETE command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: DELETE command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
DELETE FROM t1 WHERE a = 10;
ERROR 42000: DELETE command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: DELETE command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
EXPLAIN DELETE FROM t1 USING t1, t2 WHERE t1.a = t2.a;
ERROR 42000: DELETE command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: DELETE command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
DELETE FROM t1 USING t1, t2 WHERE t1.a = t2.a;
ERROR 42000: DELETE command denied to user 'privtest'@'localhost' for table 't1'
ERROR 42000: DELETE command denied to user 'privtest'@'localhost' for table `privtest_db`.`t1`
connection default;
REVOKE ALL PRIVILEGES ON privtest_db.t1 FROM 'privtest'@'localhost';
GRANT DELETE, SELECT ON privtest_db.t1 TO 'privtest'@'localhost';
......
......@@ -6,12 +6,12 @@ GRANT SELECT ON db1.* to USER_1@localhost;
connect con1,localhost,user_1,,db1;
CREATE TABLE t1(f1 int);
SELECT * FROM t1;
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db1`.`t1`
connect con2,localhost,USER_1,,db1;
SELECT * FROM t1;
f1
CREATE TABLE t2(f1 int);
ERROR 42000: CREATE command denied to user 'USER_1'@'localhost' for table 't2'
ERROR 42000: CREATE command denied to user 'USER_1'@'localhost' for table `db1`.`t2`
connection default;
disconnect con1;
disconnect con2;
......
......@@ -163,17 +163,17 @@ use testdb_1;
revoke select,show view on v6 from testdb_2@localhost;
connection testdb_2;
show fields from testdb_1.v5;
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v5'
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table `testdb_1`.`v5`
show create view testdb_1.v5;
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v5'
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table `testdb_1`.`v5`
show fields from testdb_1.v6;
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v6'
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table `testdb_1`.`v6`
show create view testdb_1.v6;
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v6'
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table `testdb_1`.`v6`
show fields from testdb_1.v7;
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v7'
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table `testdb_1`.`v7`
show create view testdb_1.v7;
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v7'
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table `testdb_1`.`v7`
show create view v4;
View Create View character_set_client collation_connection
v4 CREATE ALGORITHM=UNDEFINED DEFINER=`testdb_2`@`localhost` SQL SECURITY DEFINER VIEW `v4` AS select `v3`.`f1` AS `f1`,`v3`.`f2` AS `f2` from `testdb_1`.`v3` latin1 latin1_swedish_ci
......@@ -191,7 +191,7 @@ show create view v2;
View Create View character_set_client collation_connection
v2 CREATE ALGORITHM=UNDEFINED DEFINER=`testdb_2`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS select `v1`.`f1` AS `f1` from `testdb_1`.`v1` latin1 latin1_swedish_ci
show create view testdb_1.v1;
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v1'
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table `testdb_1`.`v1`
select table_name from information_schema.columns a
where a.table_name = 'v2';
table_name
......@@ -238,7 +238,7 @@ where table_name='v1';
table_schema table_name view_definition
testdb_1 v1
show create view testdb_1.v1;
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'v1'
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table `testdb_1`.`v1`
connection default;
drop user mysqltest_1@localhost;
drop database testdb_1;
......
......@@ -38,7 +38,7 @@ INNER JOIN view_stations AS stations
ON table_source.id = stations.icao
LEFT JOIN table_target AS old
USING (mexs_id);
ERROR 42000: INSERT, DELETE command denied to user 'user20989'@'localhost' for table 'table_target'
ERROR 42000: INSERT, DELETE command denied to user 'user20989'@'localhost' for table `meow`.`table_target`
REPLACE INTO view_target2
SELECT stations.mexs_id AS mexs_id, datetime AS messzeit
FROM table_source
......@@ -46,7 +46,7 @@ INNER JOIN view_stations AS stations
ON table_source.id = stations.icao
LEFT JOIN view_target2 AS old
USING (mexs_id);
ERROR 42000: INSERT, DELETE command denied to user 'user20989'@'localhost' for table 'view_target2'
ERROR 42000: INSERT, DELETE command denied to user 'user20989'@'localhost' for table `meow`.`view_target2`
REPLACE INTO view_target3
SELECT stations.mexs_id AS mexs_id, datetime AS messzeit
FROM table_source
......@@ -70,7 +70,7 @@ ON table_source.id = stations.icao
LEFT JOIN table_target AS old
USING (mexs_id);
REPLACE INTO table_target2 VALUES ('00X45Y78','2006-07-12 07:50:00');
ERROR 42000: INSERT, DELETE command denied to user 'user20989'@'localhost' for table 'table_target2'
ERROR 42000: INSERT, DELETE command denied to user 'user20989'@'localhost' for table `meow`.`table_target2`
REPLACE INTO view_target2 VALUES ('12X45Y78','2006-07-12 07:50:00');
SELECT stations.mexs_id AS mexs_id, datetime AS messzeit
FROM table_source
......
......@@ -51,9 +51,9 @@ connection default;
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user_1;
connection con1;
select * from t1;
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `d`.`t1`
select invisible from t1;
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `d`.`t1`
disconnect con1;
#Final Cleanup
......
......@@ -57,9 +57,9 @@ connection default;
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user_1;
connection con1;
select * from t1;
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `d`.`t1`
select count(row_start) from t1;
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `d`.`t1`
disconnect con1;
#Cleanup
......
......@@ -217,6 +217,7 @@ drop table t2;
--echo #
--echo # Test kill USER
--echo #
--source include/count_sessions.inc
grant ALL on test.* to test@localhost;
grant ALL on test.* to test2@localhost;
connect (con3, localhost, test,,);
......@@ -241,6 +242,7 @@ connection con4;
--error 2013,2006,5014
select 1;
connection default;
--source include/wait_until_count_sessions.inc
--echo #
--echo # MDEV-4911 - add KILL query id, and add query id information to
......
This diff is collapsed.
......@@ -27,7 +27,7 @@ CREATE TABLE t1(f1 INT);
GRANT SELECT ON T1 to user_1@localhost;
connect con1,localhost,user_1,,d1;
select * from t1;
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `d1`.`t1`
select * from T1;
f1
connection default;
......
This diff is collapsed.
--source include/have_debug.inc
--echo #
--echo # MDEV-29672 Add MTR tests covering key and key segment flags and types
--echo #
SET debug_dbug='+d,key';
CREATE TABLE types (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
type TEXT NOT NULL,
prefix_length INT NOT NULL
);
INSERT INTO types (type, prefix_length) VALUES
('INT', 0),
('BIGINT', 0),
('DOUBLE', 0),
('DECIMAL(20,10)', 0),
('CHAR(4)', 0),
('CHAR(10)', 0),
('VARCHAR(4)', 0),
('VARCHAR(6)', 0),
('VARCHAR(8)', 0),
('VARCHAR(12)', 0),
('VARCHAR(16)', 0),
('VARCHAR(100)', 0),
('TEXT', 4),
('TEXT', 6),
('TEXT', 8),
('TEXT', 12),
('TEXT', 16),
('TEXT', 100);
DELIMITER $$;
BEGIN NOT ATOMIC
DECLARE create2_template TEXT
DEFAULT 'CREATE TABLE t1 (a TYPE1 NOT NULL, b TYPE2 NOT NULL, KEY(SEG1,SEG2))';
DECLARE cur2 CURSOR FOR
SELECT t1.type AS type1,
t2.type AS type2,
t1.prefix_length AS prefix_length1,
t2.prefix_length AS prefix_length2
FROM types AS t1, types AS t2
ORDER BY t1.id, t2.id;
FOR rec IN cur2 DO
BEGIN
DECLARE tabledef TEXT DEFAULT REPLACE(create2_template,'TYPE1', rec.type1);
SET tabledef=REPLACE(tabledef, 'TYPE2', rec.type2);
SET tabledef=REPLACE(tabledef, 'SEG1',
IF(rec.prefix_length1,
CONCAT('a(',rec.prefix_length1,')'), 'a'));
SET tabledef=REPLACE(tabledef, 'SEG2',
IF(rec.prefix_length2,
CONCAT('b(',rec.prefix_length2,')'), 'b'));
SELECT tabledef AS ``;
EXECUTE IMMEDIATE tabledef;
SHOW WARNINGS;
SHOW CREATE TABLE t1;
DROP TABLE t1;
END;
END FOR;
END;
$$
DELIMITER ;$$
DROP TABLE types;
SET debug_dbug='';
......@@ -666,7 +666,7 @@ connect unsecure,localhost,untrusted,,mysqltest1;
mysql mysqltest1 -uuntrusted < var/tmp/bug31611.sql
connection unsecure;
INSERT INTO t1 VALUES (1,USER());
ERROR 42000: INSERT command denied to user 'untrusted'@'localhost' for table 't1'
ERROR 42000: INSERT command denied to user 'untrusted'@'localhost' for table `mysqltest1`.`t1`
SELECT * FROM t1;
a b
1 root@localhost
......
......@@ -1866,6 +1866,7 @@ drop table `t1`;
create table t1(a int);
create table t2(a int);
create table t3(a int);
mysqldump: Couldn't find table: "non_existing"
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
......@@ -3443,6 +3444,8 @@ create table t1 ( id serial );
create view v1 as select * from t1;
drop table t1;
mysqldump {
mysqldump: Got error: 1356: "View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them" when using LOCK TABLES
mysqldump: Couldn't execute 'SHOW FIELDS FROM `v1`': View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them (1356)
-- failed on view `v1`: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `test`.`t1`.`id` AS `id` from `t1`
......@@ -3736,6 +3739,9 @@ DROP TABLE t1;
CREATE TABLE t1(a int);
INSERT INTO t1 VALUES (1), (2);
mysqldump: Input filename too long: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
mysqldump: Got error: 1083: "Field separator argument is not what is expected; check the manual" when executing 'SELECT INTO OUTFILE'
mysqldump: Got error: 1083: "Field separator argument is not what is expected; check the manual" when executing 'SELECT INTO OUTFILE'
mysqldump: Got error: 1083: "Field separator argument is not what is expected; check the manual" when executing 'SELECT INTO OUTFILE'
DROP TABLE t1;
CREATE TABLE t2 (a INT) ENGINE=MyISAM;
CREATE TABLE t3 (a INT) ENGINE=MyISAM;
......@@ -3829,6 +3835,7 @@ grant all privileges on mysqldump_test_db.* to user2;
connect user27293,localhost,user1,,mysqldump_test_db,$MASTER_MYPORT,$MASTER_MYSOCK;
connection user27293;
create procedure mysqldump_test_db.sp1() select 'hello';
mysqldump: user2 has insufficient privileges to SHOW CREATE PROCEDURE `sp1`!
-- insufficient privileges to SHOW CREATE PROCEDURE `sp1`
-- does user2 have permissions on mysql.proc?
......@@ -4060,6 +4067,7 @@ UNLOCK TABLES;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
mysqldump: Got error: 1146: "Table 'test.???????????????????????' doesn't exist" when using LOCK TABLES
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
......@@ -4283,6 +4291,7 @@ Abernathy
aberrant
aberration
drop table words;
mysqlimport: Error: 1146, Table 'test.words' doesn't exist, when using table: words
drop table t1;
drop table t2;
drop table words2;
......@@ -4603,6 +4612,8 @@ CREATE TABLE t1 (a INT, b CHAR(10) CHARSET koi8r, c CHAR(10) CHARSET latin1);
CREATE TABLE t2 LIKE t1;
INSERT INTO t1 VALUES (1, 'ABC-АБВ', 'DEF-ÂÃÄ'), (2, NULL, NULL);
# error on multi-character ENCLOSED/ESCAPED BY
mysqldump: Got error: 1083: "Field separator argument is not what is expected; check the manual" when executing 'SELECT INTO OUTFILE'
mysqldump: Got error: 1083: "Field separator argument is not what is expected; check the manual" when executing 'SELECT INTO OUTFILE'
# default '--default-charset' (binary):
##################################################
1 ABC- DEF-
......@@ -5089,6 +5100,7 @@ connection conn_1;
<field name="c1">3</field>
</row>
</table_data>
mysqldump: user1 has insufficient privileges to SHOW CREATE FUNCTION `hello1`!
<triggers name="t2">
<trigger Trigger="trig1" sql_mode="" character_set_client="latin1" collation_connection="latin1_swedish_ci" Database_Collation="latin1_swedish_ci" Created="--TIME--">
<![CDATA[
......@@ -5392,6 +5404,8 @@ ROUTINE_NAME
proc
one
DROP DATABASE bug25717383;
mysqldump: Got error: 2005: "Unknown server host 'unknownhost'" when trying to connect
mysqldump: Couldn't execute 'SHOW SLAVE STATUS': Server has gone away (2006)
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases
......@@ -5621,6 +5635,7 @@ t1_id int,
CONSTRAINT fk
FOREIGN KEY (t1_id) REFERENCES t1 (id)
) ENGINE = InnoDB;
mysqlimport: Error: 1452, Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `fk` FOREIGN KEY (`t1_id`) REFERENCES `t1` (`id`)), when using table: t2
select count(*) from t2;
count(*)
1
......@@ -6299,6 +6314,7 @@ j integer
INSERT INTO t VALUES (1,1),(2,2),(3,3),(4,4);
# Dump database 1
# Restore from database 1 to database 2
ERROR 1100 (HY000) at line 45: Table 'seq_t_i' was not locked with LOCK TABLES
SETVAL(`seq_t_i`, 1, 0)
1
DROP DATABASE IF EXISTS test1;
......
This diff is collapsed.
......@@ -22,7 +22,7 @@ select * from t1;
f1
5
delete from t1;
ERROR 42000: DELETE command denied to user 'ssl_user1'@'localhost' for table 't1'
ERROR 42000: DELETE command denied to user 'ssl_user1'@'localhost' for table `test`.`t1`
connection con3;
SELECT VARIABLE_VALUE <> '' AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
have_ssl
......@@ -31,7 +31,7 @@ select * from t1;
f1
5
delete from t1;
ERROR 42000: DELETE command denied to user 'ssl_user3'@'localhost' for table 't1'
ERROR 42000: DELETE command denied to user 'ssl_user3'@'localhost' for table `test`.`t1`
connection con4;
SELECT VARIABLE_VALUE <> '' AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
have_ssl
......@@ -40,7 +40,7 @@ select * from t1;
f1
5
delete from t1;
ERROR 42000: DELETE command denied to user 'ssl_user4'@'localhost' for table 't1'
ERROR 42000: DELETE command denied to user 'ssl_user4'@'localhost' for table `test`.`t1`
connection default;
disconnect con1;
disconnect con3;
......
......@@ -13,7 +13,7 @@ return a+1;
END|
set optimizer_trace="enabled=on";
select * from db1.t1;
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table `db1`.`t1`
select * from information_schema.OPTIMIZER_TRACE;
QUERY TRACE MISSING_BYTES_BEYOND_MAX_MEM_SIZE INSUFFICIENT_PRIVILEGES
0 1
......
......@@ -1897,7 +1897,7 @@ ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
SELECT * FROM t1 PARTITION (p0);
i
UNLOCK TABLES;
DROP TABLE t1;
DROP TABLE t1, t2;
#
# MDEV-18371 Server crashes in ha_innobase::cmp_ref upon UPDATE with PARTITION clause.
#
......@@ -1915,7 +1915,88 @@ a b
4 3
8 2
2 6
DROP TABLE t1, t2;
DROP TABLE t1;
#
# MDEV-21134 Crash with partitioned table, PARTITION syntax, and index_merge.
#
create table t1 (
pk int primary key,
a int,
b int,
filler char(32),
key (a),
key (b)
) engine=myisam partition by range(pk) (
partition p0 values less than (10),
partition p1 values less than MAXVALUE
) ;
insert into t1 select
seq,
MOD(seq, 100),
MOD(seq, 100),
'filler-data-filler-data'
from
seq_1_to_5000;
explain select * from t1 partition (p1) where a=10 and b=10;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index_merge a,b a,b 5,5 NULL 1 Using intersect(a,b); Using where
flush tables;
select * from t1 partition (p1)where a=10 and b=10;
pk a b filler
10 10 10 filler-data-filler-data
110 10 10 filler-data-filler-data
210 10 10 filler-data-filler-data
310 10 10 filler-data-filler-data
410 10 10 filler-data-filler-data
510 10 10 filler-data-filler-data
610 10 10 filler-data-filler-data
710 10 10 filler-data-filler-data
810 10 10 filler-data-filler-data
910 10 10 filler-data-filler-data
1010 10 10 filler-data-filler-data
1110 10 10 filler-data-filler-data
1210 10 10 filler-data-filler-data
1310 10 10 filler-data-filler-data
1410 10 10 filler-data-filler-data
1510 10 10 filler-data-filler-data
1610 10 10 filler-data-filler-data
1710 10 10 filler-data-filler-data
1810 10 10 filler-data-filler-data
1910 10 10 filler-data-filler-data
2010 10 10 filler-data-filler-data
2110 10 10 filler-data-filler-data
2210 10 10 filler-data-filler-data
2310 10 10 filler-data-filler-data
2410 10 10 filler-data-filler-data
2510 10 10 filler-data-filler-data
2610 10 10 filler-data-filler-data
2710 10 10 filler-data-filler-data
2810 10 10 filler-data-filler-data
2910 10 10 filler-data-filler-data
3010 10 10 filler-data-filler-data
3110 10 10 filler-data-filler-data
3210 10 10 filler-data-filler-data
3310 10 10 filler-data-filler-data
3410 10 10 filler-data-filler-data
3510 10 10 filler-data-filler-data
3610 10 10 filler-data-filler-data
3710 10 10 filler-data-filler-data
3810 10 10 filler-data-filler-data
3910 10 10 filler-data-filler-data
4010 10 10 filler-data-filler-data
4110 10 10 filler-data-filler-data
4210 10 10 filler-data-filler-data
4310 10 10 filler-data-filler-data
4410 10 10 filler-data-filler-data
4510 10 10 filler-data-filler-data
4610 10 10 filler-data-filler-data
4710 10 10 filler-data-filler-data
4810 10 10 filler-data-filler-data
4910 10 10 filler-data-filler-data
DROP TABLE t1;
#
# End of 10.3 tests
#
#
# MDEV-18982: INSERT using explicit patition pruning with column list
#
......@@ -1925,3 +2006,6 @@ select * from t1;
a
1
drop table t1;
#
# End of 10.4 tests
#
--source include/have_innodb.inc
--source include/have_partition.inc
--source include/have_sequence.inc
# Helper statement
let $get_handler_status_counts= SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
......@@ -876,7 +877,7 @@ SELECT * FROM t1 PARTITION (p0);
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
SELECT * FROM t1 PARTITION (p0);
UNLOCK TABLES;
DROP TABLE t1;
DROP TABLE t1, t2;
--echo #
--echo # MDEV-18371 Server crashes in ha_innobase::cmp_ref upon UPDATE with PARTITION clause.
......@@ -887,10 +888,41 @@ INSERT INTO t1 VALUES (3,0),(8,2),(7,8),(3,4),(2,4),(0,7),(4,3),(3,6);
FLUSH TABLES;
UPDATE t1 PARTITION (p3,p1) SET a = 2 WHERE a = 3;
SELECT * FROM t1;
DROP TABLE t1;
--echo #
--echo # MDEV-21134 Crash with partitioned table, PARTITION syntax, and index_merge.
--echo #
create table t1 (
pk int primary key,
a int,
b int,
filler char(32),
key (a),
key (b)
) engine=myisam partition by range(pk) (
partition p0 values less than (10),
partition p1 values less than MAXVALUE
) ;
insert into t1 select
seq,
MOD(seq, 100),
MOD(seq, 100),
'filler-data-filler-data'
from
seq_1_to_5000;
explain select * from t1 partition (p1) where a=10 and b=10;
flush tables;
select * from t1 partition (p1)where a=10 and b=10;
# Cleanup
DROP TABLE t1, t2;
DROP TABLE t1;
--echo #
--echo # End of 10.3 tests
--echo #
--echo #
--echo # MDEV-18982: INSERT using explicit patition pruning with column list
......@@ -900,3 +932,8 @@ create table t1 (a int) partition by hash(a);
insert into t1 partition (p0) (a) values (1);
select * from t1;
drop table t1;
--echo #
--echo # End of 10.4 tests
--echo #
......@@ -14,7 +14,7 @@ GRANT USAGE ON *.* TO `mysqltest_1`@`localhost`
GRANT SELECT, ALTER ON `mysqltest_1`.* TO `mysqltest_1`@`localhost`
alter table t1 add b int;
alter table t1 drop partition p2;
ERROR 42000: DROP command denied to user 'mysqltest_1'@'localhost' for table 't1'
ERROR 42000: DROP command denied to user 'mysqltest_1'@'localhost' for table `mysqltest_1`.`t1`
disconnect conn1;
connection default;
grant drop on mysqltest_1.* to mysqltest_1@localhost;
......@@ -25,7 +25,7 @@ connection default;
revoke alter on mysqltest_1.* from mysqltest_1@localhost;
connect conn3,localhost,mysqltest_1,,mysqltest_1;
alter table t1 drop partition p3;
ERROR 42000: ALTER command denied to user 'mysqltest_1'@'localhost' for table 't1'
ERROR 42000: ALTER command denied to user 'mysqltest_1'@'localhost' for table `mysqltest_1`.`t1`
disconnect conn3;
connection default;
revoke select,alter,drop on mysqltest_1.* from mysqltest_1@localhost;
......
......@@ -6,7 +6,7 @@ GRANT INSERT ON mysql.plugin TO bug51770@localhost;
connect con1,localhost,bug51770,,;
INSTALL PLUGIN example SONAME 'ha_example.so';
UNINSTALL PLUGIN example;
ERROR 42000: DELETE command denied to user 'bug51770'@'localhost' for table 'plugin'
ERROR 42000: DELETE command denied to user 'bug51770'@'localhost' for table `mysql`.`plugin`
connection default;
GRANT DELETE ON mysql.plugin TO bug51770@localhost;
connection con1;
......
......@@ -216,7 +216,7 @@ new trigger: 10
drop trigger t1_bd;
set @val=11;
execute stmt using @val;
call p_verify_reprepare_count(1);
call p_verify_reprepare_count(0);
SUCCESS
select @message;
......@@ -226,7 +226,7 @@ Test 6-e: removing a relevant trigger
drop trigger t1_bi;
set @val=12;
execute stmt using @val;
call p_verify_reprepare_count(1);
call p_verify_reprepare_count(0);
SUCCESS
select @message;
......@@ -386,7 +386,7 @@ a
flush table t1;
set @var=9;
execute stmt using @var;
call p_verify_reprepare_count(1);
call p_verify_reprepare_count(0);
SUCCESS
select * from t2;
......@@ -834,7 +834,7 @@ a b c
10 20 50
20 40 100
30 60 150
call p_verify_reprepare_count(1);
call p_verify_reprepare_count(0);
SUCCESS
# Check that we properly handle ALTER VIEW statements.
......@@ -1214,7 +1214,7 @@ drop trigger v2_bi;
set @message=null;
set @var=9;
execute stmt using @var;
call p_verify_reprepare_count(1);
call p_verify_reprepare_count(0);
SUCCESS
select @message;
......@@ -2588,7 +2588,7 @@ SELECT * FROM t1;
a
2048
1025
1024
2048
DROP TABLE t1;
#
# End of 10.1 tests
......
......@@ -252,7 +252,8 @@ drop trigger t1_bd;
set @val=11;
execute stmt using @val;
call p_verify_reprepare_count(1);
# No trigger in opened table => nothing to check => no reprepare
call p_verify_reprepare_count(0);
select @message;
--echo Test 6-e: removing a relevant trigger
......@@ -261,7 +262,8 @@ drop trigger t1_bi;
set @val=12;
execute stmt using @val;
call p_verify_reprepare_count(1);
# No trigger in opened table => nothing to check => no reprepare
call p_verify_reprepare_count(0);
select @message;
set @val=13;
execute stmt using @val;
......@@ -376,7 +378,8 @@ select * from t3;
flush table t1;
set @var=9;
execute stmt using @var;
call p_verify_reprepare_count(1);
# flush tables now do not mean reprepare
call p_verify_reprepare_count(0);
select * from t2;
select * from t3;
drop view v1;
......@@ -745,7 +748,7 @@ call p_verify_reprepare_count(1);
flush table t2;
execute stmt;
call p_verify_reprepare_count(1);
call p_verify_reprepare_count(0);
--echo # Check that we properly handle ALTER VIEW statements.
execute stmt;
......@@ -973,7 +976,8 @@ drop trigger v2_bi;
set @message=null;
set @var=9;
execute stmt using @var;
call p_verify_reprepare_count(1);
# No trigger in opened table => nothing to check => no reprepare
call p_verify_reprepare_count(0);
select @message;
create trigger v2_bi after insert on v2 for each row set @message="v2_ai";
set @var= 10;
......
......@@ -28,7 +28,7 @@ execute s_t9 ;
my_col
1
select a as my_col from t1;
ERROR 42000: SELECT command denied to user 'second_user'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'second_user'@'localhost' for table `mysqltest`.`t1`
connection default;
grant select on mysqltest.t1 to second_user@localhost
identified by 'looser' ;
......@@ -71,7 +71,7 @@ Grants for second_user@localhost
GRANT SELECT ON `mysqltest`.`t9` TO `second_user`@`localhost`
GRANT USAGE ON *.* TO `second_user`@`localhost` IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
execute s_t1 ;
ERROR 42000: SELECT command denied to user 'second_user'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'second_user'@'localhost' for table `mysqltest`.`t1`
connection default;
disconnect con3;
revoke all privileges, grant option from second_user@localhost ;
......
......@@ -541,25 +541,25 @@ show create database mysqltest;
Database Create Database
mysqltest CREATE DATABASE `mysqltest` /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci */
drop table t1;
ERROR 42000: DROP command denied to user 'mysqltest_1'@'localhost' for table 't1'
ERROR 42000: DROP command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`t1`
drop database mysqltest;
ERROR 42000: Access denied for user 'mysqltest_1'@'localhost' to database 'mysqltest'
disconnect con1;
connect con2,localhost,mysqltest_2,,test;
connection con2;
select * from mysqltest.t1;
ERROR 42000: SELECT command denied to user 'mysqltest_2'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'mysqltest_2'@'localhost' for table `mysqltest`.`t1`
show create database mysqltest;
ERROR 42000: Access denied for user 'mysqltest_2'@'localhost' to database 'mysqltest'
drop table mysqltest.t1;
ERROR 42000: DROP command denied to user 'mysqltest_2'@'localhost' for table 't1'
ERROR 42000: DROP command denied to user 'mysqltest_2'@'localhost' for table `mysqltest`.`t1`
drop database mysqltest;
ERROR 42000: Access denied for user 'mysqltest_2'@'localhost' to database 'mysqltest'
disconnect con2;
connect con3,localhost,mysqltest_3,,test;
connection con3;
select * from mysqltest.t1;
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for table `mysqltest`.`t1`
show create database mysqltest;
Database Create Database
mysqltest CREATE DATABASE `mysqltest` /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci */
......
......@@ -21,9 +21,9 @@ user1@localhost
# Making sure that user1 does not have privileges to db1.t1
#
SHOW CREATE TABLE db1.t1;
ERROR 42000: SHOW command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SHOW command denied to user 'user1'@'localhost' for table `db1`.`t1`
SHOW FIELDS IN db1.t1;
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table `db1`.`t1`
#
# Trigger: using TYPE OF with a table we don't have access to
#
......@@ -39,7 +39,7 @@ SET NEW.b = 10;
END
$$
INSERT INTO t1 (a) VALUES (10);
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table `db1`.`t1`
SELECT * FROM t1;
a b
10 20
......@@ -56,7 +56,7 @@ SELECT a;
END;
$$
CALL p1;
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table `db1`.`t1`
DROP PROCEDURE p1;
#
# Stored procedure: Using TYPE OF for with a table that we don't have access to
......@@ -72,7 +72,7 @@ END;
$$
connection conn1;
CALL p1;
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table `db1`.`t1`
DROP PROCEDURE p1;
connection default;
CREATE PROCEDURE p1()
......@@ -84,7 +84,7 @@ END;
$$
connection conn1;
CALL p1;
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table `db1`.`t1`
DROP PROCEDURE p1;
#
# Stored procedure: Using TYPE OF for with a table that we don't have access to
......@@ -129,7 +129,7 @@ RETURN OCTET_LENGTH(a);
END;
$$
SELECT f1();
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table `db1`.`t1`
DROP FUNCTION f1;
DROP TABLE t1;
#
......@@ -147,7 +147,7 @@ END;
$$
connection conn1;
SELECT f1();
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table `db1`.`t1`
DROP FUNCTION f1;
DROP TABLE t1;
#
......@@ -176,7 +176,7 @@ connection conn1;
# Making sure that user1 has access to db1.t1.a, but not to db1.t1.b
#
SHOW CREATE TABLE db1.t1;
ERROR 42000: SHOW command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SHOW command denied to user 'user1'@'localhost' for table `db1`.`t1`
SHOW FIELDS IN db1.t1;
Field Type Null Key Default Extra
a int(11) YES NULL
......
......@@ -50,7 +50,7 @@ select db1_secret.db();
db1_secret.db()
test
select * from db1_secret.t1;
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table `db1_secret`.`t1`
create procedure db1_secret.dummy() begin end;
ERROR 42000: Access denied for user 'user1'@'localhost' to database 'db1_secret'
drop procedure db1_secret.dummy;
......@@ -65,7 +65,7 @@ select db1_secret.db();
db1_secret.db()
test
select * from db1_secret.t1;
ERROR 42000: SELECT command denied to user ''@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user ''@'localhost' for table `db1_secret`.`t1`
create procedure db1_secret.dummy() begin end;
ERROR 42000: Access denied for user ''@'%' to database 'db1_secret'
drop procedure db1_secret.dummy;
......@@ -102,14 +102,14 @@ db()
test
connection con2user1;
call db1_secret.stamp(5);
ERROR 42000: INSERT command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: INSERT command denied to user 'user1'@'localhost' for table `db1_secret`.`t1`
select db1_secret.db();
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table `db1_secret`.`t1`
connection con3anon;
call db1_secret.stamp(6);
ERROR 42000: INSERT command denied to user ''@'localhost' for table 't1'
ERROR 42000: INSERT command denied to user ''@'localhost' for table `db1_secret`.`t1`
select db1_secret.db();
ERROR 42000: SELECT command denied to user ''@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user ''@'localhost' for table `db1_secret`.`t1`
connection con1root;
drop database if exists db2;
create database db2;
......@@ -127,7 +127,7 @@ connection con2user1;
use db2;
create procedure p () insert into t2 values (1);
call p();
ERROR 42000: INSERT command denied to user 'user1'@'localhost' for table 't2'
ERROR 42000: INSERT command denied to user 'user1'@'localhost' for table `db2`.`t2`
connect con4user2,localhost,user2,,;
connection con4user2;
use db2;
......@@ -405,9 +405,9 @@ id int(11) YES NULL
call db_bug14533.bug14533_2();
id
desc db_bug14533.t1;
ERROR 42000: SELECT command denied to user 'user_bug14533'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user_bug14533'@'localhost' for table `db_bug14533`.`t1`
select * from db_bug14533.t1;
ERROR 42000: SELECT command denied to user 'user_bug14533'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user_bug14533'@'localhost' for table `db_bug14533`.`t1`
connection default;
disconnect user_bug14533;
drop user user_bug14533@localhost;
......@@ -567,24 +567,24 @@ END|
CREATE SQL SECURITY INVOKER VIEW v1 AS SELECT f_evil();
connect conn1, localhost, mysqltest_u1,,;
SELECT COUNT(*) FROM t1;
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table `test`.`t1`
SELECT f_evil();
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table `test`.`t1`
SELECT @a, @b;
@a @b
mysqltest_u1@localhost NULL
SELECT f_suid(f_evil());
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table `test`.`t1`
SELECT @a, @b;
@a @b
mysqltest_u1@localhost NULL
CALL p_suid(f_evil());
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table `test`.`t1`
SELECT @a, @b;
@a @b
mysqltest_u1@localhost NULL
SELECT * FROM v1;
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table 'v1'
ERROR 42000: SELECT command denied to user 'mysqltest_u1'@'localhost' for table `test`.`v1`
SELECT @a, @b;
@a @b
mysqltest_u1@localhost NULL
......
......@@ -243,13 +243,13 @@ return (select * from db37908.t1 limit 1)|
connect user1,localhost,mysqltest_1,,test;
connection user1;
select * from db37908.t1;
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table `db37908`.`t1`
show status where variable_name ='uptime' and 2 in (select * from db37908.t1);
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table `db37908`.`t1`
show procedure status where name ='proc37908' and 1 in (select f1 from db37908.t1);
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table `db37908`.`t1`
show function status where name ='func37908' and 1 in (select func37908());
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table `db37908`.`t1`
connection default;
disconnect user1;
disconnect root;
......
......@@ -25,9 +25,9 @@ convert_tz(b, 'Europe/Moscow', 'UTC')
update t1, t2 set t1.b = convert_tz('2004-10-21 19:00:00', 'Europe/Moscow', 'UTC')
where t1.a = t2.c and t2.d = (select max(d) from t2);
select * from mysql.time_zone_name;
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'time_zone_name'
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table `mysql`.`time_zone_name`
select Name, convert_tz('2004-10-21 19:00:00', Name, 'UTC') from mysql.time_zone_name;
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'time_zone_name'
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table `mysql`.`time_zone_name`
connection default;
disconnect tzuser;
connection default;
......@@ -54,9 +54,9 @@ convert_tz(b, 'Europe/Moscow', 'UTC')
update t1, t2 set t1.b = convert_tz('2004-11-30 12:00:00', 'Europe/Moscow', 'UTC')
where t1.a = t2.c and t2.d = (select max(d) from t2);
select * from mysql.time_zone_name;
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'time_zone_name'
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table `mysql`.`time_zone_name`
select Name, convert_tz('2004-11-30 12:00:00', Name, 'UTC') from mysql.time_zone_name;
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'time_zone_name'
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table `mysql`.`time_zone_name`
drop table t1, t2;
create table t1 (a int, b datetime);
create table t2 (a int, b varchar(40));
......@@ -82,10 +82,10 @@ a lb
1 2001-01-01 03:00:00
2 2002-01-01 03:00:00
select * from v1, mysql.time_zone;
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'time_zone'
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table `mysql`.`time_zone`
drop view v1;
create view v1 as select a, convert_tz(b, 'UTC', 'Europe/Moscow') as lb from t1, mysql.time_zone;
ERROR 42000: ANY command denied to user 'mysqltest_1'@'localhost' for table 'time_zone'
ERROR 42000: ANY command denied to user 'mysqltest_1'@'localhost' for table `mysql`.`time_zone`
connection default;
disconnect tzuser3;
drop table t1;
......
......@@ -23,7 +23,7 @@ connection wl2818_definer_con;
CREATE TRIGGER trg1 AFTER INSERT ON t1
FOR EACH ROW
INSERT INTO t2 VALUES(CURRENT_USER());
ERROR 42000: TRIGGER command denied to user 'mysqltest_dfn'@'localhost' for table 't1'
ERROR 42000: TRIGGER command denied to user 'mysqltest_dfn'@'localhost' for table `mysqltest_db1`.`t1`
disconnect wl2818_definer_con;
connection default;
GRANT TRIGGER ON mysqltest_db1.t1 TO mysqltest_dfn@localhost;
......@@ -38,12 +38,12 @@ REVOKE TRIGGER ON mysqltest_db1.t1 FROM mysqltest_dfn@localhost;
connect wl2818_definer_con,localhost,mysqltest_dfn,,mysqltest_db1;
connection wl2818_definer_con;
DROP TRIGGER trg1;
ERROR 42000: TRIGGER command denied to user 'mysqltest_dfn'@'localhost' for table 't1'
ERROR 42000: TRIGGER command denied to user 'mysqltest_dfn'@'localhost' for table `mysqltest_db1`.`t1`
disconnect wl2818_definer_con;
connect wl2818_definer_con,localhost,mysqltest_dfn,,mysqltest_db1;
connection wl2818_definer_con;
INSERT INTO t1 VALUES(0);
ERROR 42000: TRIGGER command denied to user 'mysqltest_dfn'@'localhost' for table 't1'
ERROR 42000: TRIGGER command denied to user 'mysqltest_dfn'@'localhost' for table `mysqltest_db1`.`t1`
disconnect wl2818_definer_con;
connection default;
GRANT TRIGGER ON mysqltest_db1.t1 TO mysqltest_dfn@localhost;
......@@ -95,7 +95,7 @@ REVOKE INSERT ON mysqltest_db1.t2 FROM mysqltest_dfn@localhost;
connection wl2818_invoker_con;
use mysqltest_db1;
INSERT INTO t1 VALUES(3);
ERROR 42000: INSERT command denied to user 'mysqltest_dfn'@'localhost' for table 't2'
ERROR 42000: INSERT command denied to user 'mysqltest_dfn'@'localhost' for table `mysqltest_db1`.`t2`
SELECT * FROM t1;
num_value
1
......@@ -563,7 +563,7 @@ INSERT INTO t2 VALUES (2);
connection default;
REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
UPDATE IGNORE t1, t2 SET t1.a1 = 2, t2.a1 = 3 WHERE t1.a1 = 1 AND t2.a1 = 2;
ERROR 42000: TRIGGER command denied to user 'mysqltest_u1'@'localhost' for table 't1'
ERROR 42000: TRIGGER command denied to user 'mysqltest_u1'@'localhost' for table `mysqltest_db1`.`t1`
DROP DATABASE mysqltest_db1;
DROP USER mysqltest_u1@localhost;
disconnect con1;
......
......@@ -2679,5 +2679,90 @@ ALTER TABLE t4 ADD INDEX (`NULL`);
DROP TABLE t1, t2, t3, t4;
set @@default_storage_engine=@save_default_storage_engine;
#
# MDEV-29022: add_slave destroy child list and has dead code
# (test added to be sure that ordering by several subqueries works)
#
create table t1 (aa int);
insert into t1 values (-1),(0),(1),(2),(3),(4),(5),(6),(98),(99),(100),(102);
create table t2 (a int, b int);
insert into t2 values (2,2),(2,3),(3,4),(3,5);
select a as a, b as b,
(select max(aa) from t1 where aa < t2.a) as c,
(select max(aa) from t1 where aa < t2.b) as d
from t2
union select 0 as a, 100 as b,
(select max(aa) from t1 where aa < 0) as c,
(select max(aa) from t1 where aa < 100) as d
union select 0 as a, 99 as b,
(select max(aa) from t1 where aa < 0) as c,
(select max(aa) from t1 where aa < 99) as d
order by (select max(aa) from t1 where aa < a),
(select max(aa) from t1 where aa < b);
a b c d
0 99 -1 98
0 100 -1 99
2 2 1 1
2 3 1 2
3 4 2 3
3 5 2 4
select a as a, b as b,
(select max(aa) from t1 where aa < t2.a) as c,
(select 200 - max(aa) from t1 where aa < t2.b) as d
from t2
union select 0 as a, 100 as b,
(select max(aa) from t1 where aa < 0) as c,
(select 200 - max(aa) from t1 where aa < 100) as d
union select 0 as a, 99 as b,
(select max(aa) from t1 where aa < 0) as c,
(select 200 - max(aa) from t1 where aa < 99) as d
order by (select max(aa) from t1 where aa < a),
(select 200 - max(aa) from t1 where aa < b);
a b c d
0 100 -1 101
0 99 -1 102
2 3 1 198
2 2 1 199
3 5 2 196
3 4 2 197
(select a as a, b as b,
(select max(aa) from t1 where aa < t2.a) as c,
(select max(aa) from t1 where aa < t2.b) as d
from t2)
union (select 0 as a, 100 as b,
(select max(aa) from t1 where aa < 0) as c,
(select max(aa) from t1 where aa < 100) as d)
union (select 0 as a, 99 as b,
(select max(aa) from t1 where aa < 0) as c,
(select max(aa) from t1 where aa < 99) as d)
order by (select max(aa) from t1 where aa < a),
(select max(aa) from t1 where aa < b);
a b c d
0 99 -1 98
0 100 -1 99
2 2 1 1
2 3 1 2
3 4 2 3
3 5 2 4
(select a as a, b as b,
(select max(aa) from t1 where aa < t2.a) as c,
(select 200 - max(aa) from t1 where aa < t2.b) as d
from t2)
union (select 0 as a, 100 as b,
(select max(aa) from t1 where aa < 0) as c,
(select 200 - max(aa) from t1 where aa < 100) as d)
union (select 0 as a, 99 as b,
(select max(aa) from t1 where aa < 0) as c,
(select 200 - max(aa) from t1 where aa < 99) as d)
order by (select max(aa) from t1 where aa < a),
(select 200 - max(aa) from t1 where aa < b);
a b c d
0 100 -1 101
0 99 -1 102
2 3 1 198
2 2 1 199
3 5 2 196
3 4 2 197
drop table t1,t2;
#
# End of 10.3 tests
#
......@@ -1913,6 +1913,76 @@ DROP TABLE t1, t2, t3, t4;
set @@default_storage_engine=@save_default_storage_engine;
--echo #
--echo # MDEV-29022: add_slave destroy child list and has dead code
--echo # (test added to be sure that ordering by several subqueries works)
--echo #
create table t1 (aa int);
insert into t1 values (-1),(0),(1),(2),(3),(4),(5),(6),(98),(99),(100),(102);
create table t2 (a int, b int);
insert into t2 values (2,2),(2,3),(3,4),(3,5);
select a as a, b as b,
(select max(aa) from t1 where aa < t2.a) as c,
(select max(aa) from t1 where aa < t2.b) as d
from t2
union select 0 as a, 100 as b,
(select max(aa) from t1 where aa < 0) as c,
(select max(aa) from t1 where aa < 100) as d
union select 0 as a, 99 as b,
(select max(aa) from t1 where aa < 0) as c,
(select max(aa) from t1 where aa < 99) as d
order by (select max(aa) from t1 where aa < a),
(select max(aa) from t1 where aa < b);
select a as a, b as b,
(select max(aa) from t1 where aa < t2.a) as c,
(select 200 - max(aa) from t1 where aa < t2.b) as d
from t2
union select 0 as a, 100 as b,
(select max(aa) from t1 where aa < 0) as c,
(select 200 - max(aa) from t1 where aa < 100) as d
union select 0 as a, 99 as b,
(select max(aa) from t1 where aa < 0) as c,
(select 200 - max(aa) from t1 where aa < 99) as d
order by (select max(aa) from t1 where aa < a),
(select 200 - max(aa) from t1 where aa < b);
(select a as a, b as b,
(select max(aa) from t1 where aa < t2.a) as c,
(select max(aa) from t1 where aa < t2.b) as d
from t2)
union (select 0 as a, 100 as b,
(select max(aa) from t1 where aa < 0) as c,
(select max(aa) from t1 where aa < 100) as d)
union (select 0 as a, 99 as b,
(select max(aa) from t1 where aa < 0) as c,
(select max(aa) from t1 where aa < 99) as d)
order by (select max(aa) from t1 where aa < a),
(select max(aa) from t1 where aa < b);
(select a as a, b as b,
(select max(aa) from t1 where aa < t2.a) as c,
(select 200 - max(aa) from t1 where aa < t2.b) as d
from t2)
union (select 0 as a, 100 as b,
(select max(aa) from t1 where aa < 0) as c,
(select 200 - max(aa) from t1 where aa < 100) as d)
union (select 0 as a, 99 as b,
(select max(aa) from t1 where aa < 0) as c,
(select 200 - max(aa) from t1 where aa < 99) as d)
order by (select max(aa) from t1 where aa < a),
(select 200 - max(aa) from t1 where aa < b);
drop table t1,t2;
--echo #
--echo # End of 10.3 tests
--echo #
......@@ -6823,6 +6823,34 @@ r
drop view v1;
drop table t1;
#
# MDEV-17124: mariadb 10.1.34, views and prepared statements:
# ERROR 1615 (HY000): Prepared statement needs to be re-prepared
#
set @tdc= @@table_definition_cache, @tc= @@table_open_cache;
set global table_definition_cache= 400, table_open_cache= 400;
create table tt (a int, primary key(a)) engine=MyISAM;
create view v as select * from tt;
insert into tt values(1),(2),(3),(4);
prepare stmt from 'select * from tt';
#fill table definition cache
execute stmt;
a
1
2
3
4
prepare stmt from 'select * from v';
execute stmt;
a
1
2
3
4
drop database db;
drop view v;
drop table tt;
set global table_definition_cache= @tdc, table_open_cache= @tc;
#
# End of 10.2 tests
#
#
......
......@@ -6539,6 +6539,46 @@ select * from (select sum((select * from cte)) as r) dt2;
drop view v1;
drop table t1;
--echo #
--echo # MDEV-17124: mariadb 10.1.34, views and prepared statements:
--echo # ERROR 1615 (HY000): Prepared statement needs to be re-prepared
--echo #
set @tdc= @@table_definition_cache, @tc= @@table_open_cache;
set global table_definition_cache= 400, table_open_cache= 400;
create table tt (a int, primary key(a)) engine=MyISAM;
create view v as select * from tt;
insert into tt values(1),(2),(3),(4);
prepare stmt from 'select * from tt';
--echo #fill table definition cache
--disable_query_log
--disable_result_log
create database db;
use db;
--let $tables=401
while ($tables)
{
--eval create table t$tables (i int) engine=MyISAM
--eval select * from t$tables
--dec $tables
}
use test;
--enable_query_log
--enable_result_log
execute stmt;
prepare stmt from 'select * from v';
execute stmt;
# Cleanup
drop database db;
drop view v;
drop table tt;
set global table_definition_cache= @tdc, table_open_cache= @tc;
--echo #
--echo # End of 10.2 tests
--echo #
......
This diff is collapsed.
......@@ -23,9 +23,9 @@ user1@localhost
# Making sure that user1 does not have privileges to db1.t1
#
SHOW CREATE TABLE db1.t1;
ERROR 42000: SHOW command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SHOW command denied to user 'user1'@'localhost' for table `db1`.`t1`
SHOW FIELDS IN db1.t1;
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table `db1`.`t1`
#
# Trigger: using %TYPE with a table we don't have access to
#
......@@ -43,7 +43,7 @@ END;
END
$$
INSERT INTO t1 (a) VALUES (10);
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table `db1`.`t1`
SELECT * FROM t1;
a b
10 20
......@@ -61,7 +61,7 @@ SELECT a;
END;
$$
CALL p1;
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table `db1`.`t1`
DROP PROCEDURE p1;
CREATE PROCEDURE p1()
AS
......@@ -71,7 +71,7 @@ SELECT a.a;
END;
$$
CALL p1;
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table `db1`.`t1`
DROP PROCEDURE p1;
#
# Stored procedure: Using %TYPE for with a table that we don't have access to
......@@ -88,7 +88,7 @@ END;
$$
connection conn1;
CALL p1;
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table `db1`.`t1`
DROP PROCEDURE p1;
connection default;
CREATE PROCEDURE p1()
......@@ -101,7 +101,7 @@ END;
$$
connection conn1;
CALL p1;
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table `db1`.`t1`
DROP PROCEDURE p1;
#
# Stored procedure: Using %TYPE for with a table that we don't have access to
......@@ -149,7 +149,7 @@ RETURN OCTET_LENGTH(a);
END;
$$
SELECT f1();
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table `db1`.`t1`
DROP FUNCTION f1;
DROP TABLE t1;
#
......@@ -168,7 +168,7 @@ END;
$$
connection conn1;
SELECT f1();
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table `db1`.`t1`
DROP FUNCTION f1;
DROP TABLE t1;
#
......@@ -198,7 +198,7 @@ connection conn1;
# Making sure that user1 has access to db1.t1.a, but not to db1.t1.b
#
SHOW CREATE TABLE db1.t1;
ERROR 42000: SHOW command denied to user 'user1'@'localhost' for table 't1'
ERROR 42000: SHOW command denied to user 'user1'@'localhost' for table `db1`.`t1`
SHOW FIELDS IN db1.t1;
Field Type Null Key Default Extra
a int(11) YES NULL
......
......@@ -301,7 +301,7 @@ select * from t2;
a
connection con1;
create trigger trg before insert on t1 for each row set new.a= 10;
ERROR 42000: TRIGGER command denied to user 'zedjzlcsjhd'@'localhost' for table 't1'
ERROR 42000: TRIGGER command denied to user 'zedjzlcsjhd'@'localhost' for table `mysqltest1`.`t1`
connection master;
delete from t1;
create trigger trg before insert on t1 for each row set new.a= 10;
......
......@@ -221,31 +221,31 @@ connect user5_2, localhost, user_2, , db_storedproc_1;
user_2@localhost db_storedproc_1
CALL sp5_s_i();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_ins();
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_sel();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
connection default;
root@localhost db_storedproc_1
CALL sp5_sel();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
grant insert on db_storedproc_1.* to 'user_1'@'localhost';
flush privileges;
connection user5_2;
user_2@localhost db_storedproc_1
CALL sp5_s_i();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_ins();
CALL sp5_sel();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
connection default;
root@localhost db_storedproc_1
CALL sp5_sel();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
grant SELECT on db_storedproc_1.* to 'user_1'@'localhost';
flush privileges;
connection user5_2;
......@@ -276,9 +276,9 @@ inserted outside of SP NULL
inserted from sp5_ins 2000-10-00
inserted from sp5_s_i 2000-10-00
inserted from sp5_ins 2000-10-00
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_ins();
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_sel();
c1 c2 c3
inserted outside of SP NULL
......@@ -294,11 +294,11 @@ connection user5_2;
user_2@localhost db_storedproc_1
CALL sp5_s_i();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_ins();
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_sel();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
disconnect user5_2;
connection default;
......@@ -348,9 +348,9 @@ user_2@localhost db_storedproc_1
CALL sp3166_s_i();
c1
inserted outside SP
ERROR 42000: INSERT command denied to user 'user_2'@'localhost' for table 't3166'
ERROR 42000: INSERT command denied to user 'user_2'@'localhost' for table `db_storedproc_1`.`t3166`
CALL sp3166_ins();
ERROR 42000: INSERT command denied to user 'user_2'@'localhost' for table 't3166'
ERROR 42000: INSERT command denied to user 'user_2'@'localhost' for table `db_storedproc_1`.`t3166`
CALL sp3166_sel();
c1
inserted outside SP
......@@ -390,10 +390,10 @@ connect user6_4, localhost, user_2, , db_storedproc_1;
user_2@localhost db_storedproc_1
CALL sp3166_s_i();
ERROR 42000: SELECT command denied to user 'user_2'@'localhost' for table 't3166'
ERROR 42000: SELECT command denied to user 'user_2'@'localhost' for table `db_storedproc_1`.`t3166`
CALL sp3166_ins();
CALL sp3166_sel();
ERROR 42000: SELECT command denied to user 'user_2'@'localhost' for table 't3166'
ERROR 42000: SELECT command denied to user 'user_2'@'localhost' for table `db_storedproc_1`.`t3166`
disconnect user6_4;
connection default;
CALL sp3166_s_i();
......
......@@ -99,7 +99,7 @@ test_noprivs@localhost
use priv_db;
create trigger trg1_1 before INSERT on t1 for each row
set new.f1 = 'trig 3.5.3.2_1-no';
ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table 't1'
ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table `priv_db`.`t1`
connection default;
use priv_db;
insert into t1 (f1) values ('insert 3.5.3.2-no');
......@@ -135,7 +135,7 @@ Testcase 3.5.3.6:
connection no_privs;
use priv_db;
drop trigger trg1_2;
ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table 't1'
ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table `priv_db`.`t1`
connection default;
use priv_db;
insert into t1 (f1) values ('insert 3.5.3.6-yes');
......@@ -688,7 +688,7 @@ insert into t2 values (new.f1);
connection default;
use priv_db;
insert into t1 (f1) values (4);
ERROR 42000: INSERT command denied to user 'test_yesprivs'@'localhost' for table 't2'
ERROR 42000: INSERT command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
revoke SELECT on priv_db.t2 from test_yesprivs@localhost;
grant INSERT on priv_db.t2 to test_yesprivs@localhost;
insert into t1 (f1) values (4);
......@@ -706,7 +706,7 @@ update t2 set f2=new.f1-1;
connection default;
use priv_db;
insert into t1 (f1) values (2);
ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for table 't2'
ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
revoke INSERT on priv_db.t2 from test_yesprivs@localhost;
grant UPDATE on priv_db.t2 to test_yesprivs@localhost;
insert into t1 (f1) values (2);
......@@ -725,7 +725,7 @@ select f2 into @aaa from t2 where f2=new.f1;
connection default;
use priv_db;
insert into t1 (f1) values (1);
ERROR 42000: SELECT command denied to user 'test_yesprivs'@'localhost' for table 't2'
ERROR 42000: SELECT command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
revoke UPDATE on priv_db.t2 from test_yesprivs@localhost;
grant SELECT on priv_db.t2 to test_yesprivs@localhost;
insert into t1 (f1) values (1);
......@@ -748,7 +748,7 @@ delete from t2;
connection default;
use priv_db;
insert into t1 (f1) values (1);
ERROR 42000: DELETE command denied to user 'test_yesprivs'@'localhost' for table 't2'
ERROR 42000: DELETE command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
revoke SELECT on priv_db.t2 from test_yesprivs@localhost;
grant DELETE on priv_db.t2 to test_yesprivs@localhost;
insert into t1 (f1) values (1);
......
......@@ -170,7 +170,7 @@ Field Type Null Key Default Extra
f1 char(10) YES MUL NULL
f2 text YES NULL
SHOW COLUMNS FROM db_datadict.t2;
ERROR 42000: SELECT command denied to user 'testuser1'@'localhost' for table 't2'
ERROR 42000: SELECT command denied to user 'testuser1'@'localhost' for table `db_datadict`.`t2`
SHOW COLUMNS FROM db_datadict.v1;
Field Type Null Key Default Extra
f2 int(1) NO 0
......@@ -182,13 +182,13 @@ TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAUL
def db_datadict t2 f1 1 NULL NO char 10 10 NULL NULL NULL latin1 latin1_swedish_ci char(10) PRI insert NEVER NULL
def db_datadict t2 f2 2 NULL YES text 65535 65535 NULL NULL NULL latin1 latin1_swedish_ci text insert NEVER NULL
SHOW COLUMNS FROM db_datadict.t1;
ERROR 42000: SELECT command denied to user 'testuser2'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'testuser2'@'localhost' for table `db_datadict`.`t1`
SHOW COLUMNS FROM db_datadict.t2;
Field Type Null Key Default Extra
f1 char(10) NO PRI NULL
f2 text YES NULL
SHOW COLUMNS FROM db_datadict.v1;
ERROR 42000: SELECT command denied to user 'testuser2'@'localhost' for table 'v1'
ERROR 42000: SELECT command denied to user 'testuser2'@'localhost' for table `db_datadict`.`v1`
connection default;
disconnect testuser1;
disconnect testuser2;
......
......@@ -151,7 +151,7 @@ t1 0 my_idx1 1 f6 ### ### ### ### ### ### ### NO
t1 0 my_idx1 2 f1 ### ### ### ### ### ### ### NO
t1 0 my_idx2 1 f3 ### ### ### ### ### ### ### NO
SHOW INDEXES FROM db_datadict.t2;
ERROR 42000: SELECT command denied to user 'testuser1'@'localhost' for table 't2'
ERROR 42000: SELECT command denied to user 'testuser1'@'localhost' for table `db_datadict`.`t2`
connection default;
disconnect testuser1;
DROP USER 'testuser1'@'localhost';
......
......@@ -172,9 +172,9 @@ Grants for testuser4@localhost
GRANT TRIGGER ON *.* TO `testuser4`@`localhost`
# TRIGGER Privilege + no SELECT Privilege on t1 --> result for query
SELECT * FROM db_datadict.t1;
ERROR 42000: SELECT command denied to user 'testuser4'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'testuser4'@'localhost' for table `db_datadict`.`t1`
DESC db_datadict.t1;
ERROR 42000: SELECT command denied to user 'testuser4'@'localhost' for table 't1'
ERROR 42000: SELECT command denied to user 'testuser4'@'localhost' for table `db_datadict`.`t1`
SELECT * FROM information_schema.triggers
WHERE trigger_name = 'trg1';
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
......
......@@ -367,7 +367,7 @@ PRIVILEGE_TYPE UPDATE
IS_GRANTABLE NO
SELECT host,user,json_detailed(priv) FROM mysql.global_priv
WHERE user LIKE 'testuser%' ORDER BY host, user;
ERROR 42000: SELECT command denied to user 'testuser2'@'localhost' for table 'global_priv'
ERROR 42000: SELECT command denied to user 'testuser2'@'localhost' for table `mysql`.`global_priv`
SHOW GRANTS;
Grants for testuser2@localhost
GRANT INSERT, UPDATE ON *.* TO `testuser2`@`localhost`
......@@ -381,7 +381,7 @@ PRIVILEGE_TYPE USAGE
IS_GRANTABLE NO
SELECT host,user,json_detailed(priv) FROM mysql.global_priv
WHERE user LIKE 'testuser%' ORDER BY host, user;
ERROR 42000: SELECT command denied to user 'testuser3'@'localhost' for table 'global_priv'
ERROR 42000: SELECT command denied to user 'testuser3'@'localhost' for table `mysql`.`global_priv`
SHOW GRANTS;
Grants for testuser3@localhost
GRANT USAGE ON *.* TO `testuser3`@`localhost`
......@@ -447,12 +447,12 @@ PRIVILEGE_TYPE USAGE
IS_GRANTABLE NO
SELECT host,user,json_detailed(priv) FROM mysql.global_priv
WHERE user LIKE 'testuser%' ORDER BY host, user;
ERROR 42000: SELECT command denied to user 'testuser1'@'localhost' for table 'global_priv'
ERROR 42000: SELECT command denied to user 'testuser1'@'localhost' for table `mysql`.`global_priv`
SHOW GRANTS;
Grants for testuser1@localhost
GRANT USAGE ON *.* TO `testuser1`@`localhost`
CREATE TABLE db_datadict.tb_55 ( c1 TEXT );
ERROR 42000: CREATE command denied to user 'testuser1'@'localhost' for table 'tb_55'
ERROR 42000: CREATE command denied to user 'testuser1'@'localhost' for table `db_datadict`.`tb_55`
SELECT * FROM information_schema.user_privileges
WHERE grantee LIKE '''testuser%'''
ORDER BY grantee, table_catalog, privilege_type;
......@@ -462,12 +462,12 @@ PRIVILEGE_TYPE USAGE
IS_GRANTABLE NO
SELECT host,user,json_detailed(priv) FROM mysql.global_priv
WHERE user LIKE 'testuser%' ORDER BY host, user;
ERROR 42000: SELECT command denied to user 'testuser1'@'localhost' for table 'global_priv'
ERROR 42000: SELECT command denied to user 'testuser1'@'localhost' for table `mysql`.`global_priv`
SHOW GRANTS;
Grants for testuser1@localhost
GRANT USAGE ON *.* TO `testuser1`@`localhost`
CREATE TABLE db_datadict.tb_66 ( c1 TEXT );
ERROR 42000: CREATE command denied to user 'testuser1'@'localhost' for table 'tb_66'
ERROR 42000: CREATE command denied to user 'testuser1'@'localhost' for table `db_datadict`.`tb_66`
# Add ALL on db_datadict.* (and select on mysql.global_priv) to testuser1;
connection default;
......@@ -564,7 +564,7 @@ GRANT USAGE ON *.* TO `testuser1`@`localhost`
GRANT ALL PRIVILEGES ON `db_datadict`.* TO `testuser1`@`localhost` WITH GRANT OPTION
GRANT SELECT ON `mysql`.`global_priv` TO `testuser1`@`localhost`
CREATE TABLE db_datadict.tb_56 ( c1 TEXT );
ERROR 42000: CREATE command denied to user 'testuser1'@'localhost' for table 'tb_56'
ERROR 42000: CREATE command denied to user 'testuser1'@'localhost' for table `db_datadict`.`tb_56`
USE db_datadict;
SELECT * FROM information_schema.user_privileges
WHERE grantee LIKE '''testuser%'''
......@@ -671,7 +671,7 @@ PRIVILEGE_TYPE USAGE
IS_GRANTABLE NO
SELECT host,user,json_detailed(priv) FROM mysql.global_priv
WHERE user LIKE 'testuser%' ORDER BY host, user;
ERROR 42000: SELECT command denied to user 'testuser1'@'localhost' for table 'global_priv'
ERROR 42000: SELECT command denied to user 'testuser1'@'localhost' for table `mysql`.`global_priv`
SHOW GRANTS;
Grants for testuser1@localhost
GRANT USAGE ON *.* TO `testuser1`@`localhost`
......
......@@ -221,31 +221,31 @@ connect user5_2, localhost, user_2, , db_storedproc_1;
user_2@localhost db_storedproc_1
CALL sp5_s_i();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_ins();
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_sel();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
connection default;
root@localhost db_storedproc_1
CALL sp5_sel();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
grant insert on db_storedproc_1.* to 'user_1'@'localhost';
flush privileges;
connection user5_2;
user_2@localhost db_storedproc_1
CALL sp5_s_i();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_ins();
CALL sp5_sel();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
connection default;
root@localhost db_storedproc_1
CALL sp5_sel();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
grant SELECT on db_storedproc_1.* to 'user_1'@'localhost';
flush privileges;
connection user5_2;
......@@ -276,9 +276,9 @@ inserted outside of SP NULL
inserted from sp5_ins 2000-10-00
inserted from sp5_s_i 2000-10-00
inserted from sp5_ins 2000-10-00
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_ins();
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_sel();
c1 c2 c3
inserted outside of SP NULL
......@@ -294,11 +294,11 @@ connection user5_2;
user_2@localhost db_storedproc_1
CALL sp5_s_i();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_ins();
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_sel();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
disconnect user5_2;
connection default;
......@@ -348,9 +348,9 @@ user_2@localhost db_storedproc_1
CALL sp3166_s_i();
c1
inserted outside SP
ERROR 42000: INSERT command denied to user 'user_2'@'localhost' for table 't3166'
ERROR 42000: INSERT command denied to user 'user_2'@'localhost' for table `db_storedproc_1`.`t3166`
CALL sp3166_ins();
ERROR 42000: INSERT command denied to user 'user_2'@'localhost' for table 't3166'
ERROR 42000: INSERT command denied to user 'user_2'@'localhost' for table `db_storedproc_1`.`t3166`
CALL sp3166_sel();
c1
inserted outside SP
......@@ -390,10 +390,10 @@ connect user6_4, localhost, user_2, , db_storedproc_1;
user_2@localhost db_storedproc_1
CALL sp3166_s_i();
ERROR 42000: SELECT command denied to user 'user_2'@'localhost' for table 't3166'
ERROR 42000: SELECT command denied to user 'user_2'@'localhost' for table `db_storedproc_1`.`t3166`
CALL sp3166_ins();
CALL sp3166_sel();
ERROR 42000: SELECT command denied to user 'user_2'@'localhost' for table 't3166'
ERROR 42000: SELECT command denied to user 'user_2'@'localhost' for table `db_storedproc_1`.`t3166`
disconnect user6_4;
connection default;
CALL sp3166_s_i();
......
......@@ -99,7 +99,7 @@ test_noprivs@localhost
use priv_db;
create trigger trg1_1 before INSERT on t1 for each row
set new.f1 = 'trig 3.5.3.2_1-no';
ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table 't1'
ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table `priv_db`.`t1`
connection default;
use priv_db;
insert into t1 (f1) values ('insert 3.5.3.2-no');
......@@ -135,7 +135,7 @@ Testcase 3.5.3.6:
connection no_privs;
use priv_db;
drop trigger trg1_2;
ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table 't1'
ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table `priv_db`.`t1`
connection default;
use priv_db;
insert into t1 (f1) values ('insert 3.5.3.6-yes');
......@@ -688,7 +688,7 @@ insert into t2 values (new.f1);
connection default;
use priv_db;
insert into t1 (f1) values (4);
ERROR 42000: INSERT command denied to user 'test_yesprivs'@'localhost' for table 't2'
ERROR 42000: INSERT command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
revoke SELECT on priv_db.t2 from test_yesprivs@localhost;
grant INSERT on priv_db.t2 to test_yesprivs@localhost;
insert into t1 (f1) values (4);
......@@ -706,7 +706,7 @@ update t2 set f2=new.f1-1;
connection default;
use priv_db;
insert into t1 (f1) values (2);
ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for table 't2'
ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
revoke INSERT on priv_db.t2 from test_yesprivs@localhost;
grant UPDATE on priv_db.t2 to test_yesprivs@localhost;
insert into t1 (f1) values (2);
......@@ -725,7 +725,7 @@ select f2 into @aaa from t2 where f2=new.f1;
connection default;
use priv_db;
insert into t1 (f1) values (1);
ERROR 42000: SELECT command denied to user 'test_yesprivs'@'localhost' for table 't2'
ERROR 42000: SELECT command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
revoke UPDATE on priv_db.t2 from test_yesprivs@localhost;
grant SELECT on priv_db.t2 to test_yesprivs@localhost;
insert into t1 (f1) values (1);
......@@ -748,7 +748,7 @@ delete from t2;
connection default;
use priv_db;
insert into t1 (f1) values (1);
ERROR 42000: DELETE command denied to user 'test_yesprivs'@'localhost' for table 't2'
ERROR 42000: DELETE command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
revoke SELECT on priv_db.t2 from test_yesprivs@localhost;
grant DELETE on priv_db.t2 to test_yesprivs@localhost;
insert into t1 (f1) values (1);
......
......@@ -221,31 +221,31 @@ connect user5_2, localhost, user_2, , db_storedproc_1;
user_2@localhost db_storedproc_1
CALL sp5_s_i();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_ins();
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_sel();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
connection default;
root@localhost db_storedproc_1
CALL sp5_sel();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
grant insert on db_storedproc_1.* to 'user_1'@'localhost';
flush privileges;
connection user5_2;
user_2@localhost db_storedproc_1
CALL sp5_s_i();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_ins();
CALL sp5_sel();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
connection default;
root@localhost db_storedproc_1
CALL sp5_sel();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
grant SELECT on db_storedproc_1.* to 'user_1'@'localhost';
flush privileges;
connection user5_2;
......@@ -276,9 +276,9 @@ inserted outside of SP NULL
inserted from sp5_ins 2000-10-00
inserted from sp5_s_i 2000-10-00
inserted from sp5_ins 2000-10-00
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_ins();
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_sel();
c1 c2 c3
inserted outside of SP NULL
......@@ -294,11 +294,11 @@ connection user5_2;
user_2@localhost db_storedproc_1
CALL sp5_s_i();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_ins();
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
CALL sp5_sel();
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table 't3165'
ERROR 42000: SELECT command denied to user 'user_1'@'localhost' for table `db_storedproc_1`.`t3165`
disconnect user5_2;
connection default;
......@@ -348,9 +348,9 @@ user_2@localhost db_storedproc_1
CALL sp3166_s_i();
c1
inserted outside SP
ERROR 42000: INSERT command denied to user 'user_2'@'localhost' for table 't3166'
ERROR 42000: INSERT command denied to user 'user_2'@'localhost' for table `db_storedproc_1`.`t3166`
CALL sp3166_ins();
ERROR 42000: INSERT command denied to user 'user_2'@'localhost' for table 't3166'
ERROR 42000: INSERT command denied to user 'user_2'@'localhost' for table `db_storedproc_1`.`t3166`
CALL sp3166_sel();
c1
inserted outside SP
......@@ -390,10 +390,10 @@ connect user6_4, localhost, user_2, , db_storedproc_1;
user_2@localhost db_storedproc_1
CALL sp3166_s_i();
ERROR 42000: SELECT command denied to user 'user_2'@'localhost' for table 't3166'
ERROR 42000: SELECT command denied to user 'user_2'@'localhost' for table `db_storedproc_1`.`t3166`
CALL sp3166_ins();
CALL sp3166_sel();
ERROR 42000: SELECT command denied to user 'user_2'@'localhost' for table 't3166'
ERROR 42000: SELECT command denied to user 'user_2'@'localhost' for table `db_storedproc_1`.`t3166`
disconnect user6_4;
connection default;
CALL sp3166_s_i();
......
......@@ -99,7 +99,7 @@ test_noprivs@localhost
use priv_db;
create trigger trg1_1 before INSERT on t1 for each row
set new.f1 = 'trig 3.5.3.2_1-no';
ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table 't1'
ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table `priv_db`.`t1`
connection default;
use priv_db;
insert into t1 (f1) values ('insert 3.5.3.2-no');
......@@ -135,7 +135,7 @@ Testcase 3.5.3.6:
connection no_privs;
use priv_db;
drop trigger trg1_2;
ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table 't1'
ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table `priv_db`.`t1`
connection default;
use priv_db;
insert into t1 (f1) values ('insert 3.5.3.6-yes');
......@@ -688,7 +688,7 @@ insert into t2 values (new.f1);
connection default;
use priv_db;
insert into t1 (f1) values (4);
ERROR 42000: INSERT command denied to user 'test_yesprivs'@'localhost' for table 't2'
ERROR 42000: INSERT command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
revoke SELECT on priv_db.t2 from test_yesprivs@localhost;
grant INSERT on priv_db.t2 to test_yesprivs@localhost;
insert into t1 (f1) values (4);
......@@ -706,7 +706,7 @@ update t2 set f2=new.f1-1;
connection default;
use priv_db;
insert into t1 (f1) values (2);
ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for table 't2'
ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
revoke INSERT on priv_db.t2 from test_yesprivs@localhost;
grant UPDATE on priv_db.t2 to test_yesprivs@localhost;
insert into t1 (f1) values (2);
......@@ -725,7 +725,7 @@ select f2 into @aaa from t2 where f2=new.f1;
connection default;
use priv_db;
insert into t1 (f1) values (1);
ERROR 42000: SELECT command denied to user 'test_yesprivs'@'localhost' for table 't2'
ERROR 42000: SELECT command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
revoke UPDATE on priv_db.t2 from test_yesprivs@localhost;
grant SELECT on priv_db.t2 to test_yesprivs@localhost;
insert into t1 (f1) values (1);
......@@ -748,7 +748,7 @@ delete from t2;
connection default;
use priv_db;
insert into t1 (f1) values (1);
ERROR 42000: DELETE command denied to user 'test_yesprivs'@'localhost' for table 't2'
ERROR 42000: DELETE command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
revoke SELECT on priv_db.t2 from test_yesprivs@localhost;
grant DELETE on priv_db.t2 to test_yesprivs@localhost;
insert into t1 (f1) values (1);
......
......@@ -23,7 +23,7 @@ i
1
# Following RENAME should not replicate to other node.
RENAME TABLE t1 TO t2;
ERROR 42000: DROP, ALTER command denied to user 'foo'@'localhost' for table 't1'
ERROR 42000: DROP, ALTER command denied to user 'foo'@'localhost' for table `test`.`t1`
# On node 2
connection node_2;
USE test;
......
......@@ -7,7 +7,7 @@
--source include/have_debug.inc
--let MYSQLD_DATADIR= `select @@datadir`
let $MYSQLD_BOOTSTRAP_CMD= $MYSQLD_BOOTSTRAP_CMD --datadir=$MYSQLD_DATADIR --debug-dbug=+d,innodb_small_log_block_no_limit;
let $MYSQLD_BOOTSTRAP_CMD= $MYSQLD_BOOTSTRAP_CMD --datadir=$MYSQLD_DATADIR --tmpdir=$MYSQL_TMP_DIR --debug-dbug=+d,innodb_small_log_block_no_limit;
--source include/kill_mysqld.inc
--rmdir $MYSQLD_DATADIR
......
......@@ -13,7 +13,7 @@ Grants for test1@localhost
GRANT USAGE ON *.* TO `test1`@`localhost`
GRANT SELECT, INSERT, CREATE, DROP ON `test`.* TO `test1`@`localhost`
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
ERROR 42000: ALTER command denied to user 'test1'@'localhost' for table 'tp'
ERROR 42000: ALTER command denied to user 'test1'@'localhost' for table `test`.`tp`
disconnect test1;
connect test2,localhost,test2,,test,$MASTER_MYPORT,$MASTER_MYSOCK;
USE test;
......@@ -83,7 +83,7 @@ Grants for test2@localhost
GRANT USAGE ON *.* TO `test2`@`localhost`
GRANT SELECT, INSERT, UPDATE, CREATE, DROP ON `test`.* TO `test2`@`localhost`
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
ERROR 42000: ALTER command denied to user 'test2'@'localhost' for table 'tp'
ERROR 42000: ALTER command denied to user 'test2'@'localhost' for table `test`.`tp`
SELECT * FROM tp WHERE a BETWEEN 0 AND 10;
a b
2 Two
......@@ -91,11 +91,11 @@ a b
6 Six
8 Eight
ALTER TABLE tp EXCHANGE PARTITION p0 WITH TABLE t_10;
ERROR 42000: ALTER command denied to user 'test2'@'localhost' for table 'tp'
ERROR 42000: ALTER command denied to user 'test2'@'localhost' for table `test`.`tp`
ALTER TABLE tsp EXCHANGE PARTITION sp00 WITH TABLE tsp_00;
ERROR 42000: ALTER command denied to user 'test2'@'localhost' for table 'tsp'
ERROR 42000: ALTER command denied to user 'test2'@'localhost' for table `test`.`tsp`
ALTER TABLE tsp EXCHANGE PARTITION sp00 WITH TABLE tsp_00;
ERROR 42000: ALTER command denied to user 'test2'@'localhost' for table 'tsp'
ERROR 42000: ALTER command denied to user 'test2'@'localhost' for table `test`.`tsp`
connection default;
disconnect test2;
DROP TABLE IF EXISTS t_10;
......
......@@ -45,7 +45,7 @@ COUNT(DISTINCT PROCESSLIST_ID)
1
SELECT COUNT(DISTINCT PROCESSLIST_ID)
FROM performance_schema.session_connect_attrs;
ERROR 42000: SELECT command denied to user 'wl5924'@'localhost' for table 'session_connect_attrs'
ERROR 42000: SELECT command denied to user 'wl5924'@'localhost' for table `performance_schema`.`session_connect_attrs`
connection default;
disconnect non_privileged_user;
grant select on performance_schema.* to wl5924@localhost;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment