mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge branch '10.10' into 10.11
This commit is contained in:
@ -257,9 +257,11 @@ ENDIF()
|
|||||||
|
|
||||||
INCLUDE(wsrep)
|
INCLUDE(wsrep)
|
||||||
|
|
||||||
OPTION(WITH_DBUG_TRACE "Enable DBUG_ENTER()/DBUG_EXIT()" ON)
|
OPTION(WITH_DBUG_TRACE "Enable DBUG_ENTER()/DBUG_RETURN()/DBUG_PRINT()" ON)
|
||||||
IF(WITH_DBUG_TRACE)
|
IF(WITH_DBUG_TRACE)
|
||||||
ADD_DEFINITIONS(-DDBUG_TRACE)
|
FOREACH(LANG C CXX)
|
||||||
|
SET(CMAKE_${LANG}_FLAGS_DEBUG "${CMAKE_${LANG}_FLAGS_DEBUG} -DDBUG_TRACE")
|
||||||
|
ENDFOREACH()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
# Always enable debug sync for debug builds.
|
# Always enable debug sync for debug builds.
|
||||||
|
@ -365,7 +365,7 @@ wsrep_forced_binlog_format=none
|
|||||||
special value NONE, meaning that there is no forced binlog format in effect.
|
special value NONE, meaning that there is no forced binlog format in effect.
|
||||||
This variable was introduced to support STATEMENT format replication during
|
This variable was introduced to support STATEMENT format replication during
|
||||||
rolling schema upgrade processing. However, in most cases ROW replication
|
rolling schema upgrade processing. However, in most cases ROW replication
|
||||||
is valid for asymmetrict schema replication.
|
is valid for asymmetric schema replication.
|
||||||
|
|
||||||
State snapshot transfer options.
|
State snapshot transfer options.
|
||||||
|
|
||||||
@ -416,7 +416,7 @@ wsrep_sst_donor=
|
|||||||
|
|
||||||
6. ONLINE SCHEMA UPGRADE
|
6. ONLINE SCHEMA UPGRADE
|
||||||
|
|
||||||
Schema upgrades mean any data definition statements (DDL statemnents) run
|
Schema upgrades mean any data definition statements (DDL statements) run
|
||||||
for the database. They change the database structure and are non-
|
for the database. They change the database structure and are non-
|
||||||
transactional.
|
transactional.
|
||||||
|
|
||||||
@ -429,7 +429,7 @@ wsrep_sst_donor=
|
|||||||
|
|
||||||
With earlier releases, DDL processing happened always by Total Order
|
With earlier releases, DDL processing happened always by Total Order
|
||||||
Isolation (TOI) method. With TOI, the DDL was scheduled to be processed in
|
Isolation (TOI) method. With TOI, the DDL was scheduled to be processed in
|
||||||
same transaction seqeuncing 'slot' in each cluster node.
|
same transaction sequencing 'slot' in each cluster node.
|
||||||
The processing is secured by locking the affected table from any other use.
|
The processing is secured by locking the affected table from any other use.
|
||||||
With TOI method, the whole cluster has part of the database locked for the
|
With TOI method, the whole cluster has part of the database locked for the
|
||||||
duration of the DDL processing.
|
duration of the DDL processing.
|
||||||
|
@ -177,7 +177,7 @@ HA_EXTRA_NO_KEYREAD=8 Normal read of records (def)
|
|||||||
HA_EXTRA_NO_USER_CHANGE=9 No user is allowed to write
|
HA_EXTRA_NO_USER_CHANGE=9 No user is allowed to write
|
||||||
HA_EXTRA_KEY_CACHE=10
|
HA_EXTRA_KEY_CACHE=10
|
||||||
HA_EXTRA_NO_KEY_CACHE=11
|
HA_EXTRA_NO_KEY_CACHE=11
|
||||||
HA_EXTRA_WAIT_LOCK=12 Wait until file is avalably (def)
|
HA_EXTRA_WAIT_LOCK=12 Wait until file is available (def)
|
||||||
HA_EXTRA_NO_WAIT_LOCK=13 If file is locked, return quickly
|
HA_EXTRA_NO_WAIT_LOCK=13 If file is locked, return quickly
|
||||||
HA_EXTRA_WRITE_CACHE=14 Use write cache in ha_write()
|
HA_EXTRA_WRITE_CACHE=14 Use write cache in ha_write()
|
||||||
HA_EXTRA_FLUSH_CACHE=15 flush write_record_cache
|
HA_EXTRA_FLUSH_CACHE=15 flush write_record_cache
|
||||||
|
@ -935,7 +935,7 @@ static int run_mysqlcheck_upgrade(my_bool mysql_db_only)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
verbose("Phase %d/%d: Checking and upgrading %s", ++phase, phases_total, what);
|
verbose("Phase %d/%d: Checking and upgrading %s", ++phase, phases_total, what);
|
||||||
print_conn_args("mysqlcheck");
|
print_conn_args("mariadb-check");
|
||||||
retch= run_tool(mysqlcheck_path,
|
retch= run_tool(mysqlcheck_path,
|
||||||
NULL, /* Send output from mysqlcheck directly to screen */
|
NULL, /* Send output from mysqlcheck directly to screen */
|
||||||
defaults_file,
|
defaults_file,
|
||||||
@ -1451,7 +1451,7 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Find mysql */
|
/* Find mysql */
|
||||||
find_tool(mysql_path, IF_WIN("mysql.exe", "mysql"), self_name);
|
find_tool(mysql_path, IF_WIN("mariadb.exe", "mariadb"), self_name);
|
||||||
|
|
||||||
open_mysql_upgrade_file();
|
open_mysql_upgrade_file();
|
||||||
|
|
||||||
@ -1459,7 +1459,7 @@ int main(int argc, char **argv)
|
|||||||
exit(upgrade_already_done(0) == 0);
|
exit(upgrade_already_done(0) == 0);
|
||||||
|
|
||||||
/* Find mysqlcheck */
|
/* Find mysqlcheck */
|
||||||
find_tool(mysqlcheck_path, IF_WIN("mysqlcheck.exe", "mysqlcheck"), self_name);
|
find_tool(mysqlcheck_path, IF_WIN("mariadb-check.exe", "mariadb-check"), self_name);
|
||||||
|
|
||||||
if (opt_systables_only && !opt_silent)
|
if (opt_systables_only && !opt_silent)
|
||||||
printf("The --upgrade-system-tables option was used, user tables won't be touched.\n");
|
printf("The --upgrade-system-tables option was used, user tables won't be touched.\n");
|
||||||
|
@ -507,7 +507,7 @@ list_dbs(MYSQL *mysql,const char *wild)
|
|||||||
MYSQL_RES *tresult = mysql_list_tables(mysql,(char*)NULL);
|
MYSQL_RES *tresult = mysql_list_tables(mysql,(char*)NULL);
|
||||||
if (mysql_affected_rows(mysql) > 0)
|
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;
|
rowcount = 0;
|
||||||
if (opt_verbose > 1)
|
if (opt_verbose > 1)
|
||||||
{
|
{
|
||||||
@ -528,13 +528,13 @@ list_dbs(MYSQL *mysql,const char *wild)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sprintf(rows,"%12lu",rowcount);
|
snprintf(rows, sizeof(rows), "%12lu", rowcount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sprintf(tables,"%6d",0);
|
snprintf(tables, sizeof(tables), "%6d" ,0);
|
||||||
sprintf(rows,"%12d",0);
|
snprintf(rows, sizeof(rows), "%12d", 0);
|
||||||
}
|
}
|
||||||
mysql_free_result(tresult);
|
mysql_free_result(tresult);
|
||||||
}
|
}
|
||||||
@ -652,7 +652,7 @@ list_tables(MYSQL *mysql,const char *db,const char *table)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sprintf(fields,"%8u",(uint) mysql_num_fields(rresult));
|
snprintf(fields, sizeof(fields), "%8u", (uint) mysql_num_fields(rresult));
|
||||||
mysql_free_result(rresult);
|
mysql_free_result(rresult);
|
||||||
|
|
||||||
if (opt_verbose > 1)
|
if (opt_verbose > 1)
|
||||||
@ -668,10 +668,10 @@ list_tables(MYSQL *mysql,const char *db,const char *table)
|
|||||||
rowcount += (unsigned long) strtoull(rrow[0], (char**) 0, 10);
|
rowcount += (unsigned long) strtoull(rrow[0], (char**) 0, 10);
|
||||||
mysql_free_result(rresult);
|
mysql_free_result(rresult);
|
||||||
}
|
}
|
||||||
sprintf(rows,"%10lu",rowcount);
|
snprintf(rows, sizeof(rows), "%10lu", rowcount);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
sprintf(rows,"%10d",0);
|
snprintf(rows, sizeof(rows), "%10d", 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -77,6 +77,9 @@ extern int (*dbug_sanity)(void);
|
|||||||
_db_stack_frame_.line= 0; \
|
_db_stack_frame_.line= 0; \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
|
#define DBUG_PRINT(keyword,arglist) \
|
||||||
|
do if (_db_pargs_(__LINE__,keyword)) _db_doprnt_ arglist; while(0)
|
||||||
|
|
||||||
#ifdef HAVE_ATTRIBUTE_CLEANUP
|
#ifdef HAVE_ATTRIBUTE_CLEANUP
|
||||||
#define DBUG_ENTER(a) struct _db_stack_frame_ _db_stack_frame_ __attribute__((cleanup(_db_return_))); \
|
#define DBUG_ENTER(a) struct _db_stack_frame_ _db_stack_frame_ __attribute__((cleanup(_db_return_))); \
|
||||||
_db_enter_ (a,__FILE__,__LINE__,&_db_stack_frame_)
|
_db_enter_ (a,__FILE__,__LINE__,&_db_stack_frame_)
|
||||||
@ -94,15 +97,15 @@ extern int (*dbug_sanity)(void);
|
|||||||
#define DBUG_ENTER(a)
|
#define DBUG_ENTER(a)
|
||||||
#define DBUG_RETURN(a1) return(a1)
|
#define DBUG_RETURN(a1) return(a1)
|
||||||
#define DBUG_VOID_RETURN return
|
#define DBUG_VOID_RETURN return
|
||||||
|
#define DBUG_PRINT(keyword,arglist) do{} while(0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define DBUG_EXECUTE(keyword,a1) \
|
#define DBUG_EXECUTE(keyword,a1) \
|
||||||
do {if (_db_keyword_(0, (keyword), 0)) { a1 }} while(0)
|
do {if (_db_keyword_(0, (keyword), 0)) { a1 }} while(0)
|
||||||
#define DBUG_EXECUTE_IF(keyword,a1) \
|
#define DBUG_EXECUTE_IF(keyword,a1) \
|
||||||
do {if (_db_keyword_(0, (keyword), 1)) { a1 }} while(0)
|
do {if (_db_keyword_(0, (keyword), 1)) { a1 }} while(0)
|
||||||
|
|
||||||
#define DBUG_IF(keyword) _db_keyword_(0, (keyword), 1)
|
#define DBUG_IF(keyword) _db_keyword_(0, (keyword), 1)
|
||||||
#define DBUG_PRINT(keyword,arglist) \
|
|
||||||
do if (_db_pargs_(__LINE__,keyword)) _db_doprnt_ arglist; while(0)
|
|
||||||
|
|
||||||
#define DBUG_PUSH_EMPTY if (_dbug_on_) { DBUG_PUSH(""); }
|
#define DBUG_PUSH_EMPTY if (_dbug_on_) { DBUG_PUSH(""); }
|
||||||
#define DBUG_POP_EMPTY if (_dbug_on_) { DBUG_POP(); }
|
#define DBUG_POP_EMPTY if (_dbug_on_) { DBUG_POP(); }
|
||||||
@ -167,6 +170,7 @@ extern void _db_suicide_(void);
|
|||||||
#define DBUG_LEAVE
|
#define DBUG_LEAVE
|
||||||
#define DBUG_RETURN(a1) do { return(a1); } while(0)
|
#define DBUG_RETURN(a1) do { return(a1); } while(0)
|
||||||
#define DBUG_VOID_RETURN do { return; } while(0)
|
#define DBUG_VOID_RETURN do { return; } while(0)
|
||||||
|
#define DBUG_PRINT(keyword, arglist) do { } while(0)
|
||||||
#define DBUG_EXECUTE(keyword,a1) do { } while(0)
|
#define DBUG_EXECUTE(keyword,a1) do { } while(0)
|
||||||
#define DBUG_EXECUTE_IF(keyword,a1) do { } while(0)
|
#define DBUG_EXECUTE_IF(keyword,a1) do { } while(0)
|
||||||
#define DBUG_IF(keyword) 0
|
#define DBUG_IF(keyword) 0
|
||||||
|
@ -436,6 +436,7 @@ void safe_mutex_free_deadlock_data(safe_mutex_t *mp);
|
|||||||
#define my_cond_wait(A,B) safe_cond_wait((A), (B), __FILE__, __LINE__)
|
#define my_cond_wait(A,B) safe_cond_wait((A), (B), __FILE__, __LINE__)
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
#define safe_mutex_is_owner(mp) (1)
|
||||||
#define safe_mutex_assert_owner(mp) do {} while (0)
|
#define safe_mutex_assert_owner(mp) do {} while (0)
|
||||||
#define safe_mutex_assert_not_owner(mp) do {} while (0)
|
#define safe_mutex_assert_not_owner(mp) do {} while (0)
|
||||||
#define safe_mutex_setflags(mp, F) do {} while (0)
|
#define safe_mutex_setflags(mp, F) do {} while (0)
|
||||||
|
@ -958,6 +958,17 @@ extern ulonglong my_getcputime(void);
|
|||||||
#define hrtime_sec_part(X) ((ulong)((X).val % HRTIME_RESOLUTION))
|
#define hrtime_sec_part(X) ((ulong)((X).val % HRTIME_RESOLUTION))
|
||||||
#define my_time(X) hrtime_to_time(my_hrtime_coarse())
|
#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
|
#if STACK_DIRECTION < 0
|
||||||
#define available_stack_size(CUR,END) (long) ((char*)(CUR) - (char*)(END))
|
#define available_stack_size(CUR,END) (long) ((char*)(CUR) - (char*)(END))
|
||||||
#else
|
#else
|
||||||
|
Submodule libmariadb updated: a6665e65c0...380ee32375
@ -5,6 +5,7 @@
|
|||||||
--source include/big_test.inc
|
--source include/big_test.inc
|
||||||
# We are using some debug-only features in this test
|
# We are using some debug-only features in this test
|
||||||
--source include/have_debug.inc
|
--source include/have_debug.inc
|
||||||
|
--source include/have_debug_sync.inc
|
||||||
# Also we are using SBR to check that statements are executed
|
# Also we are using SBR to check that statements are executed
|
||||||
# in proper order.
|
# in proper order.
|
||||||
--source include/have_binlog_format_mixed_or_statement.inc
|
--source include/have_binlog_format_mixed_or_statement.inc
|
||||||
|
@ -11,11 +11,11 @@ CREATE USER u1@localhost;
|
|||||||
grant ALL on db.v1 to u1@localhost;
|
grant ALL on db.v1 to u1@localhost;
|
||||||
connect con1,localhost,u1,,;
|
connect con1,localhost,u1,,;
|
||||||
select * from db.t1;
|
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;
|
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;
|
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;
|
select * from db.v1;
|
||||||
i c
|
i c
|
||||||
2 bar
|
2 bar
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -8,7 +8,7 @@ drop table if exists t1;
|
|||||||
|
|
||||||
# Add the datadir to the bootstrap command
|
# Add the datadir to the bootstrap command
|
||||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
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
|
# Check that --bootstrap reads from stdin
|
||||||
#
|
#
|
||||||
|
@ -19,7 +19,7 @@ rollback to savepoint s1;
|
|||||||
insert t1 values (5);
|
insert t1 values (5);
|
||||||
commit;
|
commit;
|
||||||
EOF
|
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;
|
remove_file $MYSQLTEST_VARDIR/tmp/bootstrap_test.sql;
|
||||||
|
|
||||||
source include/start_mysqld.inc;
|
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'
|
ERROR 42000: Access denied for user 'mysqltest_1'@'localhost' to database 'db2'
|
||||||
USE db1;
|
USE db1;
|
||||||
CREATE OR REPLACE TABLE t1(id INT);
|
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;
|
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'
|
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";
|
CREATE OR REPLACE FUNCTION lookup RETURNS STRING SONAME "UDF_EXAMPLE_LIB";
|
||||||
|
@ -51,7 +51,7 @@ c
|
|||||||
select d from mysqltest.v2;
|
select d from mysqltest.v2;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for column 'd' in table 'v2'
|
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for column 'd' in table 'v2'
|
||||||
select * from mysqltest.v3;
|
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;
|
connection root;
|
||||||
grant select on mysqltest.v3 to mysqltest_1@localhost;
|
grant select on mysqltest.v3 to mysqltest_1@localhost;
|
||||||
connection user1;
|
connection user1;
|
||||||
@ -116,7 +116,7 @@ revoke SELECT on db.t1 from foo@localhost;
|
|||||||
connection con1;
|
connection con1;
|
||||||
with cte as (select * from t1 where i < 4)
|
with cte as (select * from t1 where i < 4)
|
||||||
select * from cte;
|
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;
|
disconnect con1;
|
||||||
connection default;
|
connection default;
|
||||||
drop database db;
|
drop database db;
|
||||||
|
@ -39,7 +39,7 @@ cte3 AS
|
|||||||
cte4 AS
|
cte4 AS
|
||||||
(SELECT cte2.a FROM t2,cte2 WHERE cte2.a = t2.a)
|
(SELECT cte2.a FROM t2,cte2 WHERE cte2.a = t2.a)
|
||||||
SELECT * FROM cte4 as r;
|
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;
|
disconnect u1;
|
||||||
connection default;
|
connection default;
|
||||||
DROP USER 'u1'@'localhost';
|
DROP USER 'u1'@'localhost';
|
||||||
|
@ -5116,6 +5116,592 @@ t2 CREATE TABLE `t2` (
|
|||||||
set @@sql_mode=default;
|
set @@sql_mode=default;
|
||||||
drop table t1,t2;
|
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
|
# End of 10.3 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
@ -3209,6 +3209,670 @@ show create table t2;
|
|||||||
set @@sql_mode=default;
|
set @@sql_mode=default;
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-29361: Embedded recursive / non-recursive CTE within
|
||||||
|
--echo # the scope of another embedded CTE with the same name
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
# All recursive CTEs with name x are embedded in in the definition of 'cte',
|
||||||
|
# without this embedding CTE the bug could not be reproduced
|
||||||
|
|
||||||
|
# two recursive CTEs with name x, the second CTE is in the scope
|
||||||
|
# of the first one, but does not use it
|
||||||
|
# before fix of this bug: wrong result set
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
# two recursive CTEs with name x, the second CTE is in the scope of the first
|
||||||
|
# one, but does not use it; there are two non-recursive references to the latter
|
||||||
|
# before fix of this bug: wrong result set
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
# x as r1 belongs to the definition of CTE x from non-RECURSIVE with clause
|
||||||
|
# before fix of this bug: infinite sequence of recursive calls
|
||||||
|
|
||||||
|
--error ER_NO_SUCH_TABLE
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
# x as r2 belongs to the definition of CTE x from non-RECURSIVE with clause
|
||||||
|
# yet it is in the scope of another CTE with the same name
|
||||||
|
# before fix of this bug: crash in With_element::get_name()
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
# x as r1 is in the definition of CTE x from non-RECURSIVE with clause, thus
|
||||||
|
# although x as r2 is in the scope of the first CTE x an error is expected
|
||||||
|
# before fix of this bug: crash in With_element::get_name()
|
||||||
|
|
||||||
|
--error ER_NO_SUCH_TABLE
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
# x as r2 belongs to the definition of CTE x from non-RECURSIVE with clause
|
||||||
|
# and in the scope of recursive CTE y, but does not use the latter
|
||||||
|
# before fix of this bug: crash in With_element::get_name()
|
||||||
|
|
||||||
|
--error ER_NO_SUCH_TABLE
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
# x as r2 belongs to the definition of CTE x from non-RECURSIVE with clause
|
||||||
|
# and in the scope of non-recursive CTE y, but does not use the latter
|
||||||
|
# before fix of this bug: crash in With_element::get_name()
|
||||||
|
|
||||||
|
--error ER_NO_SUCH_TABLE
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
# in the subquery of the embedding CTE cte:
|
||||||
|
# x as r1 is in the definition of CTE x from non-RECURSIVE with clause;
|
||||||
|
# x as t2 is in the definition of CTE x from RECURSIVE with clause;
|
||||||
|
# an error is expected to be reported for x as r1
|
||||||
|
# before fix of this bug: infinite sequence of recursive calls
|
||||||
|
|
||||||
|
--error ER_NO_SUCH_TABLE
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
# in the subquery of the embedding CTE cte:
|
||||||
|
# x as r1 is in the definition of CTE x from non-RECURSIVE with clause, thus
|
||||||
|
# although x as r2 is in the scope of the first CTE x an error is expected
|
||||||
|
# before fix of this bug: crash in With_element::get_name()
|
||||||
|
|
||||||
|
--error ER_NO_SUCH_TABLE
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
# in the subquery of the embedding CTE cte:
|
||||||
|
# two recursive CTEs with name x, the second CTE is in the scope
|
||||||
|
# of the first one, but does not use it
|
||||||
|
# before fix of this bug: wrong result set
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
# in the subquery of the embedding CTE cte:
|
||||||
|
# two recursive CTEs with name x, the second CTE is in the scope
|
||||||
|
# of the first one, but does not use it
|
||||||
|
# before fix of this bug: Subquery returns more than 1 row
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
create table x (a int);
|
||||||
|
insert into x values (3), (7), (1), (5), (6);
|
||||||
|
|
||||||
|
|
||||||
|
# in the subquery of the embedding CTE cte:
|
||||||
|
# one non-recursive CTEs with name x using table t in a subquery, the second
|
||||||
|
# CTE x is recursive and is in the scope of the first one, but does not use it;
|
||||||
|
# the query uses both CTE with name x.
|
||||||
|
# before fix of this bug: infinite sequence of recursive calls
|
||||||
|
|
||||||
|
--error ER_SUBQUERY_NO_1_ROW
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
# in the subquery of the embedding CTE cte:
|
||||||
|
# one non-recursive CTEs with name x using table t, the second CTE x is
|
||||||
|
# recursive and is in the scope of the first one, but does not use it;
|
||||||
|
# the query uses only the second CTE with name x.
|
||||||
|
# before fix of this bug: 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;
|
||||||
|
|
||||||
|
|
||||||
|
# in the subquery of the embedding CTE cte embedded in the CTE cte_e
|
||||||
|
# one non-recursive CTEs with name x uses table t1, the second CTE x is
|
||||||
|
# recursive and is in the scope of the first one, but does not use it;
|
||||||
|
# CTE cte uses only the second CTE with name x;
|
||||||
|
# the query has two refeences to cte_e
|
||||||
|
# before fix of this bug: infinite sequence of recursive calls
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
# check : with base table x all queries abobe that returned error
|
||||||
|
# message ER_NO_SUCH_TABLE now return proper result sets
|
||||||
|
|
||||||
|
with
|
||||||
|
x as
|
||||||
|
(
|
||||||
|
select a from t1 union select a+1 from x as r1 where a < 7
|
||||||
|
)
|
||||||
|
select * from x as s1;
|
||||||
|
|
||||||
|
with
|
||||||
|
x as
|
||||||
|
(
|
||||||
|
select a from t2
|
||||||
|
union
|
||||||
|
select a+2 from x as r2 where a < 10
|
||||||
|
)
|
||||||
|
select a from x as s2;
|
||||||
|
|
||||||
|
with recursive
|
||||||
|
x as
|
||||||
|
(
|
||||||
|
select a from t1 union select a+1 from x as r1 where a < 7
|
||||||
|
)
|
||||||
|
select * from x as s1;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
# x as r1 is bound to table x, x as s1 is bound to the first CTE x
|
||||||
|
# x as r2 and x as s2 are bound to the second CTE x
|
||||||
|
# before fix of this bug: infinite sequence of recursive calls
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
# x as r1 is bound to table x, x as s1 is bound to the first CTE x
|
||||||
|
# x as r1 is bound to the first CTE x, x as s2 is bound to the second CTE x
|
||||||
|
# before fix of this bug: crash in With_element::get_name()
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
# x as r2 is bound to table x, x as s2 is bound to CTE x
|
||||||
|
# before fix of this bug: crash in With_element::get_name()
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
# x as r2 is bound to table x, x as s2 is bound to CTE x
|
||||||
|
# before fix of this bug: crash in With_element::get_name()
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
# x as r1 is bound to table x, x as s1 is bound to the first CTE x
|
||||||
|
# x as r2 and x as s2 are bound to the second CTE x
|
||||||
|
# before fix of this bug: infinite sequence of recursive calls
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
# x as r1 is bound to table x, x as s1 is bound to the first CTE x
|
||||||
|
# x as r2 is bound to the first CTE x, x as s2 is bound to the second CTE x
|
||||||
|
# before fix of this bug: crash in With_element::get_name()
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
drop table t1,t2,t3,x;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.3 tests
|
--echo # End of 10.3 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -30,7 +30,7 @@ disconnect con1;
|
|||||||
connection default;
|
connection default;
|
||||||
connect con1, localhost, user5;
|
connect con1, localhost, user5;
|
||||||
FLUSH TABLE db1.t1 FOR EXPORT;
|
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;
|
disconnect con1;
|
||||||
connection default;
|
connection default;
|
||||||
DROP USER user1@localhost, user2@localhost, user3@localhost,
|
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;
|
FLUSH TABLE information_schema.collations WITH READ LOCK;
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
FLUSH TABLE performance_schema.accounts WITH READ LOCK;
|
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;
|
FLUSH TABLE information_schema.colums WITH READ LOCK;
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
FLUSH TABLE information_schema.collations FOR EXPORT;
|
FLUSH TABLE information_schema.collations FOR EXPORT;
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
FLUSH TABLE performance_schema.accounts FOR EXPORT;
|
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;
|
FLUSH TABLE information_schema.colums FOR EXPORT;
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
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;
|
grant execute on mysql.* to foo@localhost;
|
||||||
connect foo, localhost, foo;
|
connect foo, localhost, foo;
|
||||||
call mysql.AddGeometryColumn('', 'mysql', 'proc', 'c', 10);
|
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;
|
disconnect foo;
|
||||||
connection default;
|
connection default;
|
||||||
drop user foo@localhost;
|
drop user foo@localhost;
|
||||||
|
@ -545,9 +545,9 @@ ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for column
|
|||||||
update mysqltest_1.t2, mysqltest_2.t2 set d=20 where d=1;
|
update mysqltest_1.t2, mysqltest_2.t2 set d=20 where d=1;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 'd' in table 't2'
|
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 'd' in table 't2'
|
||||||
update mysqltest_1.t1, mysqltest_2.t2 set d=20 where d=1;
|
update mysqltest_1.t1, mysqltest_2.t2 set d=20 where d=1;
|
||||||
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_1`.`t1`
|
||||||
update mysqltest_2.t1, mysqltest_1.t2 set c=20 where b=1;
|
update mysqltest_2.t1, mysqltest_1.t2 set c=20 where b=1;
|
||||||
ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for table 't1'
|
ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for table `mysqltest_2`.`t1`
|
||||||
update mysqltest_2.t1, mysqltest_2.t2 set d=10 where s=2;
|
update mysqltest_2.t1, mysqltest_2.t2 set d=10 where s=2;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 's' in table 't1'
|
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 's' in table 't1'
|
||||||
update mysqltest_1.t1, mysqltest_2.t2 set a=10,d=10;
|
update mysqltest_1.t1, mysqltest_2.t2 set a=10,d=10;
|
||||||
@ -573,14 +573,14 @@ connection conn2;
|
|||||||
use mysqltest_1;
|
use mysqltest_1;
|
||||||
update mysqltest_2.t1, mysqltest_2.t2 set c=500,d=600;
|
update mysqltest_2.t1, mysqltest_2.t2 set c=500,d=600;
|
||||||
update mysqltest_1.t1, mysqltest_1.t2 set a=100,b=200;
|
update mysqltest_1.t1, mysqltest_1.t2 set a=100,b=200;
|
||||||
ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for table 't1'
|
ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for table `mysqltest_1`.`t1`
|
||||||
use mysqltest_2;
|
use mysqltest_2;
|
||||||
update mysqltest_1.t1, mysqltest_1.t2 set a=100,b=200;
|
update mysqltest_1.t1, mysqltest_1.t2 set a=100,b=200;
|
||||||
ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for table 't1'
|
ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for table `mysqltest_1`.`t1`
|
||||||
update mysqltest_2.t1, mysqltest_1.t2 set c=100,b=200;
|
update mysqltest_2.t1, mysqltest_1.t2 set c=100,b=200;
|
||||||
ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for table 't2'
|
ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for table `mysqltest_1`.`t2`
|
||||||
update mysqltest_1.t1, mysqltest_2.t2 set a=100,d=200;
|
update mysqltest_1.t1, mysqltest_2.t2 set a=100,d=200;
|
||||||
ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for table 't1'
|
ERROR 42000: UPDATE command denied to user 'mysqltest_3'@'localhost' for table `mysqltest_1`.`t1`
|
||||||
connection master;
|
connection master;
|
||||||
select t1.*,t2.* from mysqltest_1.t1,mysqltest_1.t2;
|
select t1.*,t2.* from mysqltest_1.t1,mysqltest_1.t2;
|
||||||
a q b r
|
a q b r
|
||||||
@ -647,7 +647,7 @@ grant all on mysqltest.t1 to mysqltest_1@localhost;
|
|||||||
connect user1,localhost,mysqltest_1,,mysqltest,$MASTER_MYPORT,$MASTER_MYSOCK;
|
connect user1,localhost,mysqltest_1,,mysqltest,$MASTER_MYPORT,$MASTER_MYSOCK;
|
||||||
connection user1;
|
connection user1;
|
||||||
alter table t1 rename t2;
|
alter table t1 rename t2;
|
||||||
ERROR 42000: INSERT, CREATE command denied to user 'mysqltest_1'@'localhost' for table 't2'
|
ERROR 42000: INSERT, CREATE command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`t2`
|
||||||
disconnect user1;
|
disconnect user1;
|
||||||
connection root;
|
connection root;
|
||||||
revoke all privileges on mysqltest.t1 from mysqltest_1@localhost;
|
revoke all privileges on mysqltest.t1 from mysqltest_1@localhost;
|
||||||
@ -836,7 +836,7 @@ grant insert, create on db27515.t2 to user27515@localhost;
|
|||||||
connect conn27515, localhost, user27515, , db27515;
|
connect conn27515, localhost, user27515, , db27515;
|
||||||
connection conn27515;
|
connection conn27515;
|
||||||
rename table t1 to t2;
|
rename table t1 to t2;
|
||||||
ERROR 42000: DROP command denied to user 'user27515'@'localhost' for table 't1'
|
ERROR 42000: DROP command denied to user 'user27515'@'localhost' for table `db27515`.`t1`
|
||||||
disconnect conn27515;
|
disconnect conn27515;
|
||||||
connection master;
|
connection master;
|
||||||
revoke all privileges, grant option from user27515@localhost;
|
revoke all privileges, grant option from user27515@localhost;
|
||||||
@ -1068,13 +1068,13 @@ GRANT SELECT ON mysqltest2.* TO 'mysqltest_1'@'localhost' IDENTIFIE
|
|||||||
GRANT SHOW VIEW,SELECT ON mysqltest2.v_yy TO 'mysqltest_1'@'localhost' IDENTIFIED BY 'mysqltest_1';
|
GRANT SHOW VIEW,SELECT ON mysqltest2.v_yy TO 'mysqltest_1'@'localhost' IDENTIFIED BY 'mysqltest_1';
|
||||||
connect mysqltest_1, localhost, mysqltest_1, mysqltest_1,;
|
connect mysqltest_1, localhost, mysqltest_1, mysqltest_1,;
|
||||||
SHOW CREATE VIEW mysqltest2.v_nn;
|
SHOW CREATE VIEW mysqltest2.v_nn;
|
||||||
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table 'v_nn'
|
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table `mysqltest2`.`v_nn`
|
||||||
SHOW CREATE TABLE mysqltest2.v_nn;
|
SHOW CREATE TABLE mysqltest2.v_nn;
|
||||||
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table 'v_nn'
|
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table `mysqltest2`.`v_nn`
|
||||||
SHOW CREATE VIEW mysqltest2.v_yn;
|
SHOW CREATE VIEW mysqltest2.v_yn;
|
||||||
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table 'v_yn'
|
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table `mysqltest2`.`v_yn`
|
||||||
SHOW CREATE TABLE mysqltest2.v_yn;
|
SHOW CREATE TABLE mysqltest2.v_yn;
|
||||||
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table 'v_yn'
|
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table `mysqltest2`.`v_yn`
|
||||||
SHOW CREATE TABLE mysqltest2.v_ny;
|
SHOW CREATE TABLE mysqltest2.v_ny;
|
||||||
View Create View character_set_client collation_connection
|
View Create View character_set_client collation_connection
|
||||||
v_ny CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `mysqltest2`.`v_ny` AS select `mysqltest2`.`t_nn`.`c1` AS `c1` from `mysqltest2`.`t_nn` latin1 latin1_swedish_ci
|
v_ny CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `mysqltest2`.`v_ny` AS select `mysqltest2`.`t_nn`.`c1` AS `c1` from `mysqltest2`.`t_nn` latin1 latin1_swedish_ci
|
||||||
@ -1082,13 +1082,13 @@ SHOW CREATE VIEW mysqltest2.v_ny;
|
|||||||
View Create View character_set_client collation_connection
|
View Create View character_set_client collation_connection
|
||||||
v_ny CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `mysqltest2`.`v_ny` AS select `mysqltest2`.`t_nn`.`c1` AS `c1` from `mysqltest2`.`t_nn` latin1 latin1_swedish_ci
|
v_ny CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `mysqltest2`.`v_ny` AS select `mysqltest2`.`t_nn`.`c1` AS `c1` from `mysqltest2`.`t_nn` latin1 latin1_swedish_ci
|
||||||
SHOW CREATE TABLE mysqltest3.t_nn;
|
SHOW CREATE TABLE mysqltest3.t_nn;
|
||||||
ERROR 42000: SHOW command denied to user 'mysqltest_1'@'localhost' for table 't_nn'
|
ERROR 42000: SHOW command denied to user 'mysqltest_1'@'localhost' for table `mysqltest3`.`t_nn`
|
||||||
SHOW CREATE VIEW mysqltest3.t_nn;
|
SHOW CREATE VIEW mysqltest3.t_nn;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 't_nn'
|
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table `mysqltest3`.`t_nn`
|
||||||
SHOW CREATE VIEW mysqltest3.v_nn;
|
SHOW CREATE VIEW mysqltest3.v_nn;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'v_nn'
|
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table `mysqltest3`.`v_nn`
|
||||||
SHOW CREATE TABLE mysqltest3.v_nn;
|
SHOW CREATE TABLE mysqltest3.v_nn;
|
||||||
ERROR 42000: SHOW command denied to user 'mysqltest_1'@'localhost' for table 'v_nn'
|
ERROR 42000: SHOW command denied to user 'mysqltest_1'@'localhost' for table `mysqltest3`.`v_nn`
|
||||||
SHOW CREATE TABLE mysqltest2.t_nn;
|
SHOW CREATE TABLE mysqltest2.t_nn;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t_nn CREATE TABLE `t_nn` (
|
t_nn CREATE TABLE `t_nn` (
|
||||||
@ -1153,17 +1153,17 @@ Grants for mysqltest_1@localhost
|
|||||||
GRANT USAGE ON *.* TO `mysqltest_1`@`localhost`
|
GRANT USAGE ON *.* TO `mysqltest_1`@`localhost`
|
||||||
GRANT SELECT ON `mysqltest1`.`t1` TO `mysqltest_1`@`localhost`
|
GRANT SELECT ON `mysqltest1`.`t1` TO `mysqltest_1`@`localhost`
|
||||||
RENAME TABLE t1 TO t2;
|
RENAME TABLE t1 TO t2;
|
||||||
ERROR 42000: DROP, ALTER command denied to user 'mysqltest_1'@'localhost' for table 't1'
|
ERROR 42000: DROP, ALTER command denied to user 'mysqltest_1'@'localhost' for table `mysqltest1`.`t1`
|
||||||
ALTER TABLE t1 RENAME TO t2;
|
ALTER TABLE t1 RENAME TO t2;
|
||||||
ERROR 42000: DROP, ALTER command denied to user 'mysqltest_1'@'localhost' for table 't1'
|
ERROR 42000: DROP, ALTER command denied to user 'mysqltest_1'@'localhost' for table `mysqltest1`.`t1`
|
||||||
disconnect conn42;
|
disconnect conn42;
|
||||||
connection default;
|
connection default;
|
||||||
GRANT DROP ON mysqltest1.t1 TO mysqltest_1@localhost;
|
GRANT DROP ON mysqltest1.t1 TO mysqltest_1@localhost;
|
||||||
connect conn42,localhost,mysqltest_1,,mysqltest1;
|
connect conn42,localhost,mysqltest_1,,mysqltest1;
|
||||||
RENAME TABLE t1 TO t2;
|
RENAME TABLE t1 TO t2;
|
||||||
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 `mysqltest1`.`t1`
|
||||||
ALTER TABLE t1 RENAME TO t2;
|
ALTER TABLE t1 RENAME TO t2;
|
||||||
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 `mysqltest1`.`t1`
|
||||||
disconnect conn42;
|
disconnect conn42;
|
||||||
connection default;
|
connection default;
|
||||||
GRANT ALTER ON mysqltest1.t1 TO mysqltest_1@localhost;
|
GRANT ALTER ON mysqltest1.t1 TO mysqltest_1@localhost;
|
||||||
@ -1173,9 +1173,9 @@ Grants for mysqltest_1@localhost
|
|||||||
GRANT USAGE ON *.* TO `mysqltest_1`@`localhost`
|
GRANT USAGE ON *.* TO `mysqltest_1`@`localhost`
|
||||||
GRANT SELECT, DROP, ALTER ON `mysqltest1`.`t1` TO `mysqltest_1`@`localhost`
|
GRANT SELECT, DROP, ALTER ON `mysqltest1`.`t1` TO `mysqltest_1`@`localhost`
|
||||||
RENAME TABLE t1 TO t2;
|
RENAME TABLE t1 TO t2;
|
||||||
ERROR 42000: INSERT, CREATE command denied to user 'mysqltest_1'@'localhost' for table 't2'
|
ERROR 42000: INSERT, CREATE command denied to user 'mysqltest_1'@'localhost' for table `mysqltest1`.`t2`
|
||||||
ALTER TABLE t1 RENAME TO t2;
|
ALTER TABLE t1 RENAME TO t2;
|
||||||
ERROR 42000: INSERT, CREATE command denied to user 'mysqltest_1'@'localhost' for table 't2'
|
ERROR 42000: INSERT, CREATE command denied to user 'mysqltest_1'@'localhost' for table `mysqltest1`.`t2`
|
||||||
disconnect conn42;
|
disconnect conn42;
|
||||||
connection default;
|
connection default;
|
||||||
GRANT INSERT, CREATE ON mysqltest1.t1 TO mysqltest_1@localhost;
|
GRANT INSERT, CREATE ON mysqltest1.t1 TO mysqltest_1@localhost;
|
||||||
@ -1209,9 +1209,9 @@ GRANT USAGE ON *.* TO `mysqltest_1`@`localhost`
|
|||||||
GRANT SELECT, CREATE, ALTER ON `mysqltest1`.`t1` TO `mysqltest_1`@`localhost`
|
GRANT SELECT, CREATE, ALTER ON `mysqltest1`.`t1` TO `mysqltest_1`@`localhost`
|
||||||
GRANT SELECT, CREATE, ALTER ON `mysqltest1`.`t2` TO `mysqltest_1`@`localhost`
|
GRANT SELECT, CREATE, ALTER ON `mysqltest1`.`t2` TO `mysqltest_1`@`localhost`
|
||||||
RENAME TABLE t1 TO t2;
|
RENAME TABLE t1 TO t2;
|
||||||
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 `mysqltest1`.`t1`
|
||||||
ALTER TABLE t1 RENAME TO t2;
|
ALTER TABLE t1 RENAME TO t2;
|
||||||
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 `mysqltest1`.`t1`
|
||||||
disconnect conn42;
|
disconnect conn42;
|
||||||
connection default;
|
connection default;
|
||||||
DROP USER mysqltest_1@localhost;
|
DROP USER mysqltest_1@localhost;
|
||||||
@ -1253,7 +1253,7 @@ GRANT DELETE ON t1 TO bug23556@localhost;
|
|||||||
connection bug23556;
|
connection bug23556;
|
||||||
USE bug23556;
|
USE bug23556;
|
||||||
TRUNCATE t1;
|
TRUNCATE t1;
|
||||||
ERROR 42000: DROP command denied to user 'bug23556'@'localhost' for table 't1'
|
ERROR 42000: DROP command denied to user 'bug23556'@'localhost' for table `bug23556`.`t1`
|
||||||
connection default;
|
connection default;
|
||||||
USE bug23556;
|
USE bug23556;
|
||||||
REVOKE DELETE ON t1 FROM bug23556@localhost;
|
REVOKE DELETE ON t1 FROM bug23556@localhost;
|
||||||
@ -1331,16 +1331,16 @@ CREATE PROCEDURE mysqltest1.p1() SQL SECURITY INVOKER
|
|||||||
SELECT 1;
|
SELECT 1;
|
||||||
connect bug27337_con1,localhost,mysqltest_1,,mysqltest2;
|
connect bug27337_con1,localhost,mysqltest_1,,mysqltest2;
|
||||||
CREATE TABLE t1(c INT);
|
CREATE TABLE t1(c INT);
|
||||||
ERROR 42000: CREATE command denied to user 'mysqltest_1'@'localhost' for table 't1'
|
ERROR 42000: CREATE command denied to user 'mysqltest_1'@'localhost' for table `mysqltest2`.`t1`
|
||||||
CALL mysqltest1.p1();
|
CALL mysqltest1.p1();
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
CREATE TABLE t1(c INT);
|
CREATE TABLE t1(c INT);
|
||||||
ERROR 42000: CREATE command denied to user 'mysqltest_1'@'localhost' for table 't1'
|
ERROR 42000: CREATE command denied to user 'mysqltest_1'@'localhost' for table `mysqltest2`.`t1`
|
||||||
disconnect bug27337_con1;
|
disconnect bug27337_con1;
|
||||||
connect bug27337_con2,localhost,mysqltest_1,,mysqltest2;
|
connect bug27337_con2,localhost,mysqltest_1,,mysqltest2;
|
||||||
CREATE TABLE t1(c INT);
|
CREATE TABLE t1(c INT);
|
||||||
ERROR 42000: CREATE command denied to user 'mysqltest_1'@'localhost' for table 't1'
|
ERROR 42000: CREATE command denied to user 'mysqltest_1'@'localhost' for table `mysqltest2`.`t1`
|
||||||
SHOW TABLES;
|
SHOW TABLES;
|
||||||
Tables_in_mysqltest2
|
Tables_in_mysqltest2
|
||||||
connection default;
|
connection default;
|
||||||
@ -1382,9 +1382,9 @@ EXECUTE stmt1;
|
|||||||
ERROR 42000: Access denied for user 'mysqltest_1'@'localhost' to database 'mysqltest1'
|
ERROR 42000: Access denied for user 'mysqltest_1'@'localhost' to database 'mysqltest1'
|
||||||
connection bug27337_con2;
|
connection bug27337_con2;
|
||||||
SHOW COLUMNS FROM mysqltest2.t2;
|
SHOW COLUMNS FROM mysqltest2.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 `mysqltest2`.`t2`
|
||||||
EXECUTE stmt2;
|
EXECUTE stmt2;
|
||||||
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 `mysqltest2`.`t2`
|
||||||
connection default;
|
connection default;
|
||||||
disconnect bug27337_con1;
|
disconnect bug27337_con1;
|
||||||
disconnect bug27337_con2;
|
disconnect bug27337_con2;
|
||||||
@ -1506,11 +1506,11 @@ CALL p1;
|
|||||||
ERROR 42000: SELECT command denied to user 'testuser'@'localhost' for column 'b' in table 't1'
|
ERROR 42000: SELECT command denied to user 'testuser'@'localhost' for column 'b' in table 't1'
|
||||||
# - Check table-level privileges...
|
# - Check table-level privileges...
|
||||||
SELECT a FROM t2;
|
SELECT a FROM t2;
|
||||||
ERROR 42000: SELECT command denied to user 'testuser'@'localhost' for table 't2'
|
ERROR 42000: SELECT command denied to user 'testuser'@'localhost' for table `mysqltest1`.`t2`
|
||||||
EXECUTE s2;
|
EXECUTE s2;
|
||||||
ERROR 42000: SELECT command denied to user 'testuser'@'localhost' for table 't2'
|
ERROR 42000: SELECT command denied to user 'testuser'@'localhost' for table `mysqltest1`.`t2`
|
||||||
CALL p2;
|
CALL p2;
|
||||||
ERROR 42000: SELECT command denied to user 'testuser'@'localhost' for table 't2'
|
ERROR 42000: SELECT command denied to user 'testuser'@'localhost' for table `mysqltest1`.`t2`
|
||||||
# - Check database-level privileges...
|
# - Check database-level privileges...
|
||||||
SHOW TABLES FROM mysqltest2;
|
SHOW TABLES FROM mysqltest2;
|
||||||
ERROR 42000: Access denied for user 'testuser'@'localhost' to database 'mysqltest2'
|
ERROR 42000: Access denied for user 'testuser'@'localhost' to database 'mysqltest2'
|
||||||
@ -1645,9 +1645,9 @@ ERROR 42000: execute command denied to user 'mysqluser1'@'localhost' for routine
|
|||||||
select mysqltest1.f1();
|
select mysqltest1.f1();
|
||||||
ERROR 42000: execute command denied to user 'mysqluser1'@'localhost' for routine 'mysqltest1.f1'
|
ERROR 42000: execute command denied to user 'mysqluser1'@'localhost' for routine 'mysqltest1.f1'
|
||||||
select * from mysqltest1.t11;
|
select * from mysqltest1.t11;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table 't11'
|
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table `mysqltest1`.`t11`
|
||||||
select * from mysqltest1.t22;
|
select * from mysqltest1.t22;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table 't22'
|
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table `mysqltest1`.`t22`
|
||||||
disconnect bug36544_con2;
|
disconnect bug36544_con2;
|
||||||
connection default;
|
connection default;
|
||||||
#
|
#
|
||||||
@ -1669,9 +1669,9 @@ ERROR 42000: execute command denied to user 'mysqluser1'@'localhost' for routine
|
|||||||
select mysqltest1.f1();
|
select mysqltest1.f1();
|
||||||
ERROR 42000: execute command denied to user 'mysqluser1'@'localhost' for routine 'mysqltest1.f1'
|
ERROR 42000: execute command denied to user 'mysqluser1'@'localhost' for routine 'mysqltest1.f1'
|
||||||
select * from mysqltest1.t11;
|
select * from mysqltest1.t11;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table 't11'
|
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table `mysqltest1`.`t11`
|
||||||
select * from mysqltest1.t22;
|
select * from mysqltest1.t22;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table 't22'
|
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table `mysqltest1`.`t22`
|
||||||
disconnect bug36544_con3;
|
disconnect bug36544_con3;
|
||||||
connection default;
|
connection default;
|
||||||
#
|
#
|
||||||
@ -1722,7 +1722,7 @@ create table t1 (i INT);
|
|||||||
connect user1,localhost,mysqltest,,mysqltest;
|
connect user1,localhost,mysqltest,,mysqltest;
|
||||||
connection user1;
|
connection user1;
|
||||||
insert into t1 values (1);
|
insert into t1 values (1);
|
||||||
ERROR 42000: INSERT command denied to user 'mysqltest'@'localhost' for table 't1'
|
ERROR 42000: INSERT command denied to user 'mysqltest'@'localhost' for table `mysqltest`.`t1`
|
||||||
create table t2 (i INT);
|
create table t2 (i INT);
|
||||||
create table t4 (i INT);
|
create table t4 (i INT);
|
||||||
connection default;
|
connection default;
|
||||||
@ -1734,20 +1734,20 @@ flush privileges;
|
|||||||
connection user1;
|
connection user1;
|
||||||
insert into t2 values (1);
|
insert into t2 values (1);
|
||||||
create table if not exists t1 select * from t2;
|
create table if not exists t1 select * from t2;
|
||||||
ERROR 42000: INSERT command denied to user 'mysqltest'@'localhost' for table 't1'
|
ERROR 42000: INSERT command denied to user 'mysqltest'@'localhost' for table `mysqltest`.`t1`
|
||||||
create table if not exists t3 select * from t2;
|
create table if not exists t3 select * from t2;
|
||||||
ERROR 42000: INSERT command denied to user 'mysqltest'@'localhost' for table 't3'
|
ERROR 42000: INSERT command denied to user 'mysqltest'@'localhost' for table `mysqltest`.`t3`
|
||||||
create table if not exists t4 select * from t2;
|
create table if not exists t4 select * from t2;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1050 Table 't4' already exists
|
Note 1050 Table 't4' already exists
|
||||||
create table if not exists t5 select * from t2;
|
create table if not exists t5 select * from t2;
|
||||||
create table t6 select * from t2;
|
create table t6 select * from t2;
|
||||||
create table t7 select * from t2;
|
create table t7 select * from t2;
|
||||||
ERROR 42000: INSERT command denied to user 'mysqltest'@'localhost' for table 't7'
|
ERROR 42000: INSERT command denied to user 'mysqltest'@'localhost' for table `mysqltest`.`t7`
|
||||||
create table t4 select * from t2;
|
create table t4 select * from t2;
|
||||||
ERROR 42S01: Table 't4' already exists
|
ERROR 42S01: Table 't4' already exists
|
||||||
create table t1 select * from t2;
|
create table t1 select * from t2;
|
||||||
ERROR 42000: INSERT command denied to user 'mysqltest'@'localhost' for table 't1'
|
ERROR 42000: INSERT command denied to user 'mysqltest'@'localhost' for table `mysqltest`.`t1`
|
||||||
connection default;
|
connection default;
|
||||||
drop table t1,t2,t4,t5,t6;
|
drop table t1,t2,t4,t5,t6;
|
||||||
revoke create on mysqltest.* from mysqltest@localhost;
|
revoke create on mysqltest.* from mysqltest@localhost;
|
||||||
@ -1910,7 +1910,7 @@ connect con1,localhost,testbug,,db1;
|
|||||||
SELECT * FROM `../db2/tb2`;
|
SELECT * FROM `../db2/tb2`;
|
||||||
ERROR 42S02: Table 'db1.../db2/tb2' doesn't exist
|
ERROR 42S02: Table 'db1.../db2/tb2' doesn't exist
|
||||||
SELECT * FROM `../db2`.tb2;
|
SELECT * FROM `../db2`.tb2;
|
||||||
ERROR 42000: SELECT command denied to user 'testbug'@'localhost' for table 'tb2'
|
ERROR 42000: SELECT command denied to user 'testbug'@'localhost' for table `../db2`.`tb2`
|
||||||
SELECT * FROM `#mysql50#/../db2/tb2`;
|
SELECT * FROM `#mysql50#/../db2/tb2`;
|
||||||
ERROR 42000: Incorrect table name '#mysql50#/../db2/tb2'
|
ERROR 42000: Incorrect table name '#mysql50#/../db2/tb2'
|
||||||
connection default;
|
connection default;
|
||||||
@ -1976,7 +1976,7 @@ connect con1,localhost,mysqltest_u1,,mysqltest_db1;
|
|||||||
connection con1;
|
connection con1;
|
||||||
|
|
||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE 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_db1`.`t1`
|
||||||
connection default;
|
connection default;
|
||||||
disconnect con1;
|
disconnect con1;
|
||||||
|
|
||||||
@ -2782,10 +2782,10 @@ CREATE DATABASE db;
|
|||||||
CREATE TABLE db.t (a INT);
|
CREATE TABLE db.t (a INT);
|
||||||
connect con1,localhost,foo,,;
|
connect con1,localhost,foo,,;
|
||||||
GRANT ALL ON db.t TO foo;
|
GRANT ALL ON db.t TO foo;
|
||||||
ERROR 42000: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW ... command denied to user 'foo'@'localhost' for table 't'
|
ERROR 42000: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW ... command denied to user 'foo'@'localhost' for table `db`.`t`
|
||||||
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT OPTION, REFERENCES,
|
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT OPTION, REFERENCES,
|
||||||
INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON db.t TO foo;
|
INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER ON db.t TO foo;
|
||||||
ERROR 42000: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW ... command denied to user 'foo'@'localhost' for table 't'
|
ERROR 42000: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW ... command denied to user 'foo'@'localhost' for table `db`.`t`
|
||||||
connection default;
|
connection default;
|
||||||
disconnect con1;
|
disconnect con1;
|
||||||
DROP USER foo;
|
DROP USER foo;
|
||||||
|
@ -108,9 +108,9 @@ GRANT USAGE ON *.* TO `mysqltest_1`@`localhost`
|
|||||||
GRANT SELECT, INSERT ON `mysqltest`.* TO `mysqltest_1`@`localhost`
|
GRANT SELECT, INSERT ON `mysqltest`.* TO `mysqltest_1`@`localhost`
|
||||||
insert into t1 values (1, 'I can''t change it!');
|
insert into t1 values (1, 'I can''t change it!');
|
||||||
update t1 set data='I can change it!' where id = 1;
|
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!';
|
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;
|
select * from t1;
|
||||||
id data
|
id data
|
||||||
1 I can't change it!
|
1 I can't change it!
|
||||||
@ -127,7 +127,7 @@ connection mrugly;
|
|||||||
grant select (a,b) on t1 to mysqltest_2@localhost;
|
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'
|
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for column 'b' in table 't1'
|
||||||
grant select on t1 to mysqltest_3@localhost;
|
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;
|
disconnect mrugly;
|
||||||
connection default;
|
connection default;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
@ -312,7 +312,7 @@ grant create user on *.* to mysqltest_2@localhost;
|
|||||||
connect user3,localhost,mysqltest_2,,;
|
connect user3,localhost,mysqltest_2,,;
|
||||||
connection user3;
|
connection user3;
|
||||||
select host,user,password,plugin,authentication_string from mysql.user where user like 'mysqltest_%' ;
|
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@'%';
|
create user mysqltest_A@'%';
|
||||||
rename user mysqltest_A@'%' to mysqltest_B@'%';
|
rename user mysqltest_A@'%' to mysqltest_B@'%';
|
||||||
drop user mysqltest_B@'%';
|
drop user mysqltest_B@'%';
|
||||||
@ -328,7 +328,7 @@ Grants for mysqltest_3@localhost
|
|||||||
GRANT USAGE ON *.* TO `mysqltest_3`@`localhost`
|
GRANT USAGE ON *.* TO `mysqltest_3`@`localhost`
|
||||||
GRANT INSERT, UPDATE, DELETE ON `mysql`.* 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_%' ;
|
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';
|
insert into mysql.global_priv set host='%', user='mysqltest_B';
|
||||||
create user mysqltest_A@'%';
|
create user mysqltest_A@'%';
|
||||||
rename user mysqltest_B@'%' to mysqltest_C@'%';
|
rename user mysqltest_B@'%' to mysqltest_C@'%';
|
||||||
@ -476,9 +476,9 @@ create table t1 (i int);
|
|||||||
connect user1,localhost,mysqltest_u1,,mysqltest_1;
|
connect user1,localhost,mysqltest_u1,,mysqltest_1;
|
||||||
connection user1;
|
connection user1;
|
||||||
show create table mysqltest_2.t1;
|
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;
|
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;
|
connection default;
|
||||||
grant select on mysqltest_2.t1 to mysqltest_u1@localhost;
|
grant select on mysqltest_2.t1 to mysqltest_u1@localhost;
|
||||||
connection user1;
|
connection user1;
|
||||||
@ -533,7 +533,7 @@ USE db1;
|
|||||||
SELECT c FROM t2;
|
SELECT c FROM t2;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqltest1'@'localhost' for column 'c' in table 't2'
|
ERROR 42000: SELECT command denied to user 'mysqltest1'@'localhost' for column 'c' in table 't2'
|
||||||
SELECT * FROM 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);
|
SELECT * FROM t1 JOIN t2 USING (b);
|
||||||
ERROR 42000: SELECT command denied to user 'mysqltest1'@'localhost' for column 'c' in table 't2'
|
ERROR 42000: SELECT command denied to user 'mysqltest1'@'localhost' for column 'c' in table 't2'
|
||||||
connection default;
|
connection default;
|
||||||
@ -629,7 +629,7 @@ CREATE TEMPORARY TABLE t4 SELECT * FROM t1;
|
|||||||
# temporary table without additional privileges.
|
# temporary table without additional privileges.
|
||||||
CREATE TEMPORARY TABLE t5(a INT) ENGINE = MyISAM;
|
CREATE TEMPORARY TABLE t5(a INT) ENGINE = MyISAM;
|
||||||
CREATE TEMPORARY TABLE t6(a INT) ENGINE = MERGE UNION = (t5);
|
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
|
# Check that we allow creation of MERGE table with no underlying table
|
||||||
# without additional privileges.
|
# without additional privileges.
|
||||||
CREATE TEMPORARY TABLE t6(a INT) ENGINE = MERGE UNION = ();
|
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
|
# Check that we do *not* allow altering of MERGE table with underlying
|
||||||
# temporary table without additional privileges.
|
# temporary table without additional privileges.
|
||||||
ALTER TABLE t6 UNION = (t5);
|
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.
|
# 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);
|
CREATE TEMPORARY TABLE t10(a INT) ENGINE = MERGE UNION = (t7, t8);
|
||||||
ALTER TABLE t10 UNION = (t9);
|
ALTER TABLE t10 UNION = (t9);
|
||||||
ALTER TABLE t10 UNION = (mysqltest_db2.t2_1);
|
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);
|
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 = (t9);
|
||||||
ALTER TABLE mysqltest_db2.t2_2 UNION = ();
|
ALTER TABLE mysqltest_db2.t2_2 UNION = ();
|
||||||
|
@ -30,23 +30,23 @@ a int(11) YES NULL
|
|||||||
** SHOW COLUMNS
|
** SHOW COLUMNS
|
||||||
** Should fail because there are no privileges on any column combination.
|
** Should fail because there are no privileges on any column combination.
|
||||||
show columns from mysqltest_db1.t_no_priv;
|
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:
|
** 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';
|
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
|
Field Type Null Key Default Extra
|
||||||
|
|
||||||
** CREATE TABLE ... LIKE ... require SELECT privleges and will fail.
|
** CREATE TABLE ... LIKE ... require SELECT privleges and will fail.
|
||||||
create table test.t_no_priv like mysqltest_db1.column_priv_only;
|
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.
|
** Just to be sure... SELECT also fails.
|
||||||
select * from mysqltest_db1.t_column_priv_only;
|
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).
|
** 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.
|
** First we try and fail on a table with only one column privilege.
|
||||||
show create table mysqltest_db1.t_column_priv_only;
|
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.
|
** 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 will fail if there is no grants at all:
|
||||||
show create table mysqltest_db1.t_no_priv;
|
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;
|
connection default;
|
||||||
use mysqltest_db1;
|
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
|
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 will fail because we don't have any privileges on any column combination.
|
||||||
SHOW INDEX FROM t5;
|
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 will succeed because there exist a privilege on a column combination on t6.
|
||||||
SHOW INDEX FROM 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
|
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
|
mysqltest_db1.t6 check status OK
|
||||||
** With no privileges access is naturally denied:
|
** With no privileges access is naturally denied:
|
||||||
CHECK TABLE t5;
|
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 requires SELECT privileges on the table. The following should fail:
|
||||||
CHECKSUM TABLE t6;
|
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:
|
** And this should work:
|
||||||
CHECKSUM TABLE t_select_priv;
|
CHECKSUM TABLE t_select_priv;
|
||||||
Table Checksum
|
Table Checksum
|
||||||
mysqltest_db1.t_select_priv 0
|
mysqltest_db1.t_select_priv 0
|
||||||
SHOW CREATE VIEW v5;
|
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;
|
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;
|
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;
|
SHOW CREATE VIEW v3;
|
||||||
View Create View character_set_client collation_connection
|
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
|
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.
|
# The below statement should fail before repairing t1.
|
||||||
# Otherwise info about such repair will be missing from its result-set.
|
# Otherwise info about such repair will be missing from its result-set.
|
||||||
repair table mysqltest_db1.t1, mysqltest_db1.t2;
|
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.
|
# The same is true for CHECK TABLE statement.
|
||||||
check table mysqltest_db1.t1, mysqltest_db1.t2;
|
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;
|
check table mysqltest_db1.t1;
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
mysqltest_db1.t1 check warning Table is marked as crashed
|
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`@`%`
|
SET DEFAULT ROLE `r``o'l"e` FOR `test-user`@`%`
|
||||||
DROP ROLE `r``o'l"e`;
|
DROP ROLE `r``o'l"e`;
|
||||||
DROP USER 'test-user';
|
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
|
# End of 10.3 tests
|
||||||
create user u1@h identified with 'mysql_native_password' using 'pwd';
|
create user u1@h identified with 'mysql_native_password' using 'pwd';
|
||||||
ERROR HY000: Password hash should be a 41-digit hexadecimal number
|
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 ROLE `r``o'l"e`;
|
||||||
DROP USER 'test-user';
|
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
|
--echo # End of 10.3 tests
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -154,7 +154,7 @@ a b c a
|
|||||||
1 1 1 test.t1
|
1 1 1 test.t1
|
||||||
2 2 2 test.t1
|
2 2 2 test.t1
|
||||||
select * from t2;
|
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";
|
show status like "Qcache_queries_in_cache";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Qcache_queries_in_cache 6
|
Qcache_queries_in_cache 6
|
||||||
@ -170,7 +170,7 @@ select "user3";
|
|||||||
user3
|
user3
|
||||||
user3
|
user3
|
||||||
select * from t1;
|
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;
|
select a from t1;
|
||||||
a
|
a
|
||||||
1
|
1
|
||||||
@ -178,7 +178,7 @@ a
|
|||||||
select c from t1;
|
select c from t1;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 'c' in table 't1'
|
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 'c' in table 't1'
|
||||||
select * from t2;
|
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;
|
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'
|
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 'c' in table 't1'
|
||||||
show status like "Qcache_queries_in_cache";
|
show status like "Qcache_queries_in_cache";
|
||||||
|
@ -154,7 +154,7 @@ a b c a
|
|||||||
1 1 1 test.t1
|
1 1 1 test.t1
|
||||||
2 2 2 test.t1
|
2 2 2 test.t1
|
||||||
select * from t2;
|
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";
|
show status like "Qcache_queries_in_cache";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Qcache_queries_in_cache 6
|
Qcache_queries_in_cache 6
|
||||||
@ -170,7 +170,7 @@ select "user3";
|
|||||||
user3
|
user3
|
||||||
user3
|
user3
|
||||||
select * from t1;
|
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;
|
select a from t1;
|
||||||
a
|
a
|
||||||
1
|
1
|
||||||
@ -178,7 +178,7 @@ a
|
|||||||
select c from t1;
|
select c from t1;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 'c' in table 't1'
|
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 'c' in table 't1'
|
||||||
select * from t2;
|
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;
|
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'
|
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 'c' in table 't1'
|
||||||
show status like "Qcache_queries_in_cache";
|
show status like "Qcache_queries_in_cache";
|
||||||
|
@ -10,13 +10,13 @@ connect con1,localhost,privtest,,;
|
|||||||
connection con1;
|
connection con1;
|
||||||
USE privtest_db;
|
USE privtest_db;
|
||||||
EXPLAIN INSERT INTO t1 VALUES (10);
|
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);
|
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;
|
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;
|
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;
|
connection default;
|
||||||
GRANT INSERT ON privtest_db.t1 TO 'privtest'@'localhost';
|
GRANT INSERT ON privtest_db.t1 TO 'privtest'@'localhost';
|
||||||
connection con1;
|
connection con1;
|
||||||
@ -32,36 +32,36 @@ connection default;
|
|||||||
REVOKE ALL PRIVILEGES ON privtest_db.t1 FROM 'privtest'@'localhost';
|
REVOKE ALL PRIVILEGES ON privtest_db.t1 FROM 'privtest'@'localhost';
|
||||||
connection con1;
|
connection con1;
|
||||||
EXPLAIN REPLACE INTO t1 VALUES (10);
|
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);
|
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;
|
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;
|
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;
|
connection default;
|
||||||
GRANT INSERT ON privtest_db.t1 TO 'privtest'@'localhost';
|
GRANT INSERT ON privtest_db.t1 TO 'privtest'@'localhost';
|
||||||
connection con1;
|
connection con1;
|
||||||
EXPLAIN REPLACE INTO t1 VALUES (10);
|
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);
|
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;
|
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;
|
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;
|
connection default;
|
||||||
REVOKE INSERT ON privtest_db.t1 FROM 'privtest'@'localhost';
|
REVOKE INSERT ON privtest_db.t1 FROM 'privtest'@'localhost';
|
||||||
GRANT DELETE ON privtest_db.t1 TO 'privtest'@'localhost';
|
GRANT DELETE ON privtest_db.t1 TO 'privtest'@'localhost';
|
||||||
connection con1;
|
connection con1;
|
||||||
EXPLAIN REPLACE INTO t1 VALUES (10);
|
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);
|
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;
|
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;
|
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;
|
connection default;
|
||||||
GRANT INSERT, DELETE ON privtest_db.t1 TO 'privtest'@'localhost';
|
GRANT INSERT, DELETE ON privtest_db.t1 TO 'privtest'@'localhost';
|
||||||
connection con1;
|
connection con1;
|
||||||
@ -77,13 +77,13 @@ connection default;
|
|||||||
REVOKE ALL PRIVILEGES ON privtest_db.t1 FROM 'privtest'@'localhost';
|
REVOKE ALL PRIVILEGES ON privtest_db.t1 FROM 'privtest'@'localhost';
|
||||||
connection con1;
|
connection con1;
|
||||||
EXPLAIN UPDATE t1 SET a = a + 1;
|
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;
|
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;
|
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;
|
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;
|
connection default;
|
||||||
GRANT UPDATE ON privtest_db.t1 TO 'privtest'@'localhost';
|
GRANT UPDATE ON privtest_db.t1 TO 'privtest'@'localhost';
|
||||||
connection con1;
|
connection con1;
|
||||||
@ -100,13 +100,13 @@ REVOKE UPDATE ON privtest_db.t1 FROM 'privtest'@'localhost';
|
|||||||
GRANT SELECT ON privtest_db.t1 TO 'privtest'@'localhost';
|
GRANT SELECT ON privtest_db.t1 TO 'privtest'@'localhost';
|
||||||
connection con1;
|
connection con1;
|
||||||
EXPLAIN UPDATE t1 SET a = a + 1;
|
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;
|
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;
|
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;
|
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;
|
connection default;
|
||||||
GRANT UPDATE, SELECT ON privtest_db.t1 TO 'privtest'@'localhost';
|
GRANT UPDATE, SELECT ON privtest_db.t1 TO 'privtest'@'localhost';
|
||||||
connection con1;
|
connection con1;
|
||||||
@ -123,13 +123,13 @@ connection default;
|
|||||||
REVOKE ALL PRIVILEGES ON privtest_db.t1 FROM 'privtest'@'localhost';
|
REVOKE ALL PRIVILEGES ON privtest_db.t1 FROM 'privtest'@'localhost';
|
||||||
connection con1;
|
connection con1;
|
||||||
EXPLAIN DELETE FROM t1 WHERE a = 10;
|
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;
|
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;
|
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;
|
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;
|
connection default;
|
||||||
GRANT DELETE ON privtest_db.t1 TO 'privtest'@'localhost';
|
GRANT DELETE ON privtest_db.t1 TO 'privtest'@'localhost';
|
||||||
connection con1;
|
connection con1;
|
||||||
@ -138,21 +138,21 @@ ERROR 42000: SELECT command denied to user 'privtest'@'localhost' for column 'a'
|
|||||||
DELETE FROM t1 WHERE a = 10;
|
DELETE FROM t1 WHERE a = 10;
|
||||||
ERROR 42000: SELECT command denied to user 'privtest'@'localhost' for column 'a' in table 't1'
|
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;
|
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;
|
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;
|
connection default;
|
||||||
REVOKE ALL PRIVILEGES ON privtest_db.t1 FROM 'privtest'@'localhost';
|
REVOKE ALL PRIVILEGES ON privtest_db.t1 FROM 'privtest'@'localhost';
|
||||||
GRANT SELECT ON privtest_db.t1 TO 'privtest'@'localhost';
|
GRANT SELECT ON privtest_db.t1 TO 'privtest'@'localhost';
|
||||||
connection con1;
|
connection con1;
|
||||||
EXPLAIN DELETE FROM t1 WHERE a = 10;
|
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;
|
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;
|
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;
|
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;
|
connection default;
|
||||||
REVOKE ALL PRIVILEGES ON privtest_db.t1 FROM 'privtest'@'localhost';
|
REVOKE ALL PRIVILEGES ON privtest_db.t1 FROM 'privtest'@'localhost';
|
||||||
GRANT DELETE, SELECT ON privtest_db.t1 TO '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;
|
connect con1,localhost,user_1,,db1;
|
||||||
CREATE TABLE t1(f1 int);
|
CREATE TABLE t1(f1 int);
|
||||||
SELECT * FROM t1;
|
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;
|
connect con2,localhost,USER_1,,db1;
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
f1
|
f1
|
||||||
CREATE TABLE t2(f1 int);
|
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;
|
connection default;
|
||||||
disconnect con1;
|
disconnect con1;
|
||||||
disconnect con2;
|
disconnect con2;
|
||||||
|
@ -163,17 +163,17 @@ use testdb_1;
|
|||||||
revoke select,show view on v6 from testdb_2@localhost;
|
revoke select,show view on v6 from testdb_2@localhost;
|
||||||
connection testdb_2;
|
connection testdb_2;
|
||||||
show fields from testdb_1.v5;
|
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;
|
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;
|
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;
|
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;
|
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;
|
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;
|
show create view v4;
|
||||||
View Create View character_set_client collation_connection
|
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
|
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
|
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
|
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;
|
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
|
select table_name from information_schema.columns a
|
||||||
where a.table_name = 'v2';
|
where a.table_name = 'v2';
|
||||||
table_name
|
table_name
|
||||||
@ -238,7 +238,7 @@ where table_name='v1';
|
|||||||
table_schema table_name view_definition
|
table_schema table_name view_definition
|
||||||
testdb_1 v1
|
testdb_1 v1
|
||||||
show create view 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;
|
connection default;
|
||||||
drop user mysqltest_1@localhost;
|
drop user mysqltest_1@localhost;
|
||||||
drop database testdb_1;
|
drop database testdb_1;
|
||||||
|
@ -38,7 +38,7 @@ INNER JOIN view_stations AS stations
|
|||||||
ON table_source.id = stations.icao
|
ON table_source.id = stations.icao
|
||||||
LEFT JOIN table_target AS old
|
LEFT JOIN table_target AS old
|
||||||
USING (mexs_id);
|
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
|
REPLACE INTO view_target2
|
||||||
SELECT stations.mexs_id AS mexs_id, datetime AS messzeit
|
SELECT stations.mexs_id AS mexs_id, datetime AS messzeit
|
||||||
FROM table_source
|
FROM table_source
|
||||||
@ -46,7 +46,7 @@ INNER JOIN view_stations AS stations
|
|||||||
ON table_source.id = stations.icao
|
ON table_source.id = stations.icao
|
||||||
LEFT JOIN view_target2 AS old
|
LEFT JOIN view_target2 AS old
|
||||||
USING (mexs_id);
|
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
|
REPLACE INTO view_target3
|
||||||
SELECT stations.mexs_id AS mexs_id, datetime AS messzeit
|
SELECT stations.mexs_id AS mexs_id, datetime AS messzeit
|
||||||
FROM table_source
|
FROM table_source
|
||||||
@ -70,7 +70,7 @@ ON table_source.id = stations.icao
|
|||||||
LEFT JOIN table_target AS old
|
LEFT JOIN table_target AS old
|
||||||
USING (mexs_id);
|
USING (mexs_id);
|
||||||
REPLACE INTO table_target2 VALUES ('00X45Y78','2006-07-12 07:50:00');
|
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');
|
REPLACE INTO view_target2 VALUES ('12X45Y78','2006-07-12 07:50:00');
|
||||||
SELECT stations.mexs_id AS mexs_id, datetime AS messzeit
|
SELECT stations.mexs_id AS mexs_id, datetime AS messzeit
|
||||||
FROM table_source
|
FROM table_source
|
||||||
|
@ -400,10 +400,10 @@ f(id2)
|
|||||||
14
|
14
|
||||||
EXPLAIN INSERT INTO t2 SELECT * FROM t1 WHERE id1=8 RETURNING id2;
|
EXPLAIN INSERT INTO t2 SELECT * FROM t1 WHERE id1=8 RETURNING id2;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 const PRIMARY PRIMARY 4 const 1
|
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1
|
||||||
EXPLAIN EXTENDED INSERT INTO t1 SELECT * FROM t1 WHERE id1=9 RETURNING val1;
|
EXPLAIN EXTENDED INSERT INTO t1 SELECT * FROM t1 WHERE id1=9 RETURNING val1;
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
EXPLAIN FORMAT="json" INSERT INTO t1 SELECT * FROM t1 WHERE id1=10 RETURNING val1;
|
EXPLAIN FORMAT="json" INSERT INTO t1 SELECT * FROM t1 WHERE id1=10 RETURNING val1;
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
{
|
{
|
||||||
@ -433,7 +433,7 @@ Warning 1062 Duplicate entry '7' for key 'PRIMARY'
|
|||||||
Warning 1062 Duplicate entry '8' for key 'PRIMARY'
|
Warning 1062 Duplicate entry '8' for key 'PRIMARY'
|
||||||
ANALYZE INSERT INTO t2 SELECT * FROM t1 WHERE id1=11 RETURNING *;
|
ANALYZE INSERT INTO t2 SELECT * FROM t1 WHERE id1=11 RETURNING *;
|
||||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||||
SELECT * FROM t2;
|
SELECT * FROM t2;
|
||||||
id2 val2
|
id2 val2
|
||||||
1 a
|
1 a
|
||||||
@ -615,3 +615,61 @@ DROP TABLE ins_duplicate;
|
|||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP VIEW v2;
|
DROP VIEW v2;
|
||||||
DROP FUNCTION f;
|
DROP FUNCTION f;
|
||||||
|
#
|
||||||
|
# MDEV-25028: ASAN use-after-poison in base_list_iterator::next or
|
||||||
|
# Assertion `sl->join == 0' upon INSERT .. RETURNING via PS
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
CREATE TABLE t2 (b INT);
|
||||||
|
PREPARE stmt1 FROM "INSERT INTO t1 SELECT * FROM t1 WHERE a IN (SELECT b FROM t2) RETURNING a";
|
||||||
|
EXECUTE stmt1;
|
||||||
|
a
|
||||||
|
PREPARE stmt2 FROM "INSERT INTO t1 SELECT * FROM t1 WHERE a IN (SELECT b FROM t2) RETURNING (SELECT b FROM t2)";
|
||||||
|
EXECUTE stmt2;
|
||||||
|
(SELECT b FROM t2)
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
#
|
||||||
|
# MDEV-25187: Assertion `inited == NONE || table->open_by_handler'
|
||||||
|
# failed or Direct leak in init_dynamic_array2 upon INSERT .. RETURNING
|
||||||
|
# and memory leak in init_dynamic_array2
|
||||||
|
#
|
||||||
|
CREATE TABLE t (a INT, KEY (a));
|
||||||
|
CREATE TABLE t1 (f INT);
|
||||||
|
INSERT INTO t VALUES (1),(2);
|
||||||
|
INSERT INTO t1 SELECT a FROM t WHERE 1 NOT IN (SELECT a FROM t) RETURNING f;
|
||||||
|
f
|
||||||
|
DROP TABLE t, t1;
|
||||||
|
#
|
||||||
|
# MDEV-28740: crash in INSERT RETURNING subquery in prepared statements
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
id INTEGER NOT NULL,
|
||||||
|
data VARCHAR(30),
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
)ENGINE=MyISAM;
|
||||||
|
EXECUTE IMMEDIATE 'INSERT INTO t1 (id, data) VALUES ((SELECT CAST(1 AS SIGNED INTEGER) AS anon_1), ?) RETURNING t1.id' using 'hi';
|
||||||
|
id
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# MDEV-27165: crash in base_list_iterator::next
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( id int, a int);
|
||||||
|
CREATE TABLE t2 ( id int);
|
||||||
|
INSERT INTO t1 VALUES (( SELECT 1 from t2),999999999999) RETURNING id;
|
||||||
|
ERROR 22003: Out of range value for column 'a' at row 1
|
||||||
|
EXECUTE immediate "INSERT INTO t1 VALUES (( SELECT 1 from t2),999999999999) RETURNING id ";
|
||||||
|
ERROR 22003: Out of range value for column 'a' at row 1
|
||||||
|
EXECUTE immediate "INSERT INTO t1 VALUES (( SELECT 1 from t2),9) RETURNING id ";
|
||||||
|
id
|
||||||
|
NULL
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
#
|
||||||
|
# MDEV-29686: Assertion `slave == 0' failed in
|
||||||
|
# st_select_lex_node::attach_single
|
||||||
|
#
|
||||||
|
CREATE TABLE t (a INT);
|
||||||
|
INSERT t WITH cte AS (SELECT 1) SELECT * FROM cte RETURNING *;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
DROP TABLE t;
|
||||||
|
@ -326,3 +326,73 @@ DROP TABLE ins_duplicate;
|
|||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP VIEW v2;
|
DROP VIEW v2;
|
||||||
DROP FUNCTION f;
|
DROP FUNCTION f;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-25028: ASAN use-after-poison in base_list_iterator::next or
|
||||||
|
--echo # Assertion `sl->join == 0' upon INSERT .. RETURNING via PS
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
CREATE TABLE t2 (b INT);
|
||||||
|
|
||||||
|
PREPARE stmt1 FROM "INSERT INTO t1 SELECT * FROM t1 WHERE a IN (SELECT b FROM t2) RETURNING a";
|
||||||
|
EXECUTE stmt1;
|
||||||
|
|
||||||
|
PREPARE stmt2 FROM "INSERT INTO t1 SELECT * FROM t1 WHERE a IN (SELECT b FROM t2) RETURNING (SELECT b FROM t2)";
|
||||||
|
EXECUTE stmt2;
|
||||||
|
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-25187: Assertion `inited == NONE || table->open_by_handler'
|
||||||
|
--echo # failed or Direct leak in init_dynamic_array2 upon INSERT .. RETURNING
|
||||||
|
--echo # and memory leak in init_dynamic_array2
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t (a INT, KEY (a));
|
||||||
|
CREATE TABLE t1 (f INT);
|
||||||
|
|
||||||
|
INSERT INTO t VALUES (1),(2);
|
||||||
|
|
||||||
|
INSERT INTO t1 SELECT a FROM t WHERE 1 NOT IN (SELECT a FROM t) RETURNING f;
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
DROP TABLE t, t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-28740: crash in INSERT RETURNING subquery in prepared statements
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
id INTEGER NOT NULL,
|
||||||
|
data VARCHAR(30),
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
)ENGINE=MyISAM;
|
||||||
|
|
||||||
|
EXECUTE IMMEDIATE 'INSERT INTO t1 (id, data) VALUES ((SELECT CAST(1 AS SIGNED INTEGER) AS anon_1), ?) RETURNING t1.id' using 'hi';
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-27165: crash in base_list_iterator::next
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 ( id int, a int);
|
||||||
|
CREATE TABLE t2 ( id int);
|
||||||
|
|
||||||
|
--error ER_WARN_DATA_OUT_OF_RANGE
|
||||||
|
INSERT INTO t1 VALUES (( SELECT 1 from t2),999999999999) RETURNING id;
|
||||||
|
--error ER_WARN_DATA_OUT_OF_RANGE
|
||||||
|
EXECUTE immediate "INSERT INTO t1 VALUES (( SELECT 1 from t2),999999999999) RETURNING id ";
|
||||||
|
|
||||||
|
EXECUTE immediate "INSERT INTO t1 VALUES (( SELECT 1 from t2),9) RETURNING id ";
|
||||||
|
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-29686: Assertion `slave == 0' failed in
|
||||||
|
--echo # st_select_lex_node::attach_single
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t (a INT);
|
||||||
|
INSERT t WITH cte AS (SELECT 1) SELECT * FROM cte RETURNING *;
|
||||||
|
|
||||||
|
DROP TABLE t;
|
||||||
|
@ -51,9 +51,9 @@ connection default;
|
|||||||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user_1;
|
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user_1;
|
||||||
connection con1;
|
connection con1;
|
||||||
select * from t1;
|
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;
|
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;
|
disconnect con1;
|
||||||
|
|
||||||
#Final Cleanup
|
#Final Cleanup
|
||||||
|
@ -57,9 +57,9 @@ connection default;
|
|||||||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user_1;
|
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user_1;
|
||||||
connection con1;
|
connection con1;
|
||||||
select * from t1;
|
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;
|
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;
|
disconnect con1;
|
||||||
|
|
||||||
#Cleanup
|
#Cleanup
|
||||||
|
@ -1,225 +1,7 @@
|
|||||||
set local sql_mode="";
|
set local sql_mode="";
|
||||||
set global sql_mode="";
|
set global sql_mode="";
|
||||||
SET DEBUG_SYNC = 'RESET';
|
connect con1, localhost, root;
|
||||||
DROP TABLE IF EXISTS t1, t2, t3;
|
connect con2, localhost, root;
|
||||||
DROP FUNCTION IF EXISTS MY_KILL;
|
|
||||||
CREATE FUNCTION MY_KILL(tid INT) RETURNS INT
|
|
||||||
BEGIN
|
|
||||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END;
|
|
||||||
KILL tid;
|
|
||||||
RETURN (SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID = tid);
|
|
||||||
END|
|
|
||||||
connect con1, localhost, root,,;
|
|
||||||
connect con2, localhost, root,,;
|
|
||||||
connection con1;
|
|
||||||
connection con2;
|
|
||||||
connection con1;
|
|
||||||
SET DEBUG_SYNC= 'thread_end SIGNAL con1_end';
|
|
||||||
SET DEBUG_SYNC= 'before_do_command_net_read SIGNAL con1_read';
|
|
||||||
connection con2;
|
|
||||||
SET DEBUG_SYNC='now WAIT_FOR con1_read';
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR con1_end';
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
connection con1;
|
|
||||||
SELECT 1;
|
|
||||||
Got one of the listed errors
|
|
||||||
SELECT 1;
|
|
||||||
1
|
|
||||||
1
|
|
||||||
SELECT @id != CONNECTION_ID();
|
|
||||||
@id != CONNECTION_ID()
|
|
||||||
1
|
|
||||||
connection con2;
|
|
||||||
SELECT 4;
|
|
||||||
4
|
|
||||||
4
|
|
||||||
connection default;
|
|
||||||
KILL (SELECT COUNT(*) FROM mysql.user);
|
|
||||||
ERROR 42000: KILL does not support subqueries or stored functions
|
|
||||||
connection con1;
|
|
||||||
connection con2;
|
|
||||||
connection con1;
|
|
||||||
SET DEBUG_SYNC= 'thread_end SIGNAL con1_end';
|
|
||||||
SET DEBUG_SYNC= 'before_do_command_net_read SIGNAL con1_read WAIT_FOR kill';
|
|
||||||
connection con2;
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR con1_read';
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR con1_end';
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
connection con1;
|
|
||||||
SELECT 1;
|
|
||||||
Got one of the listed errors
|
|
||||||
SELECT 1;
|
|
||||||
1
|
|
||||||
1
|
|
||||||
SELECT @id != CONNECTION_ID();
|
|
||||||
@id != CONNECTION_ID()
|
|
||||||
1
|
|
||||||
connection con2;
|
|
||||||
SELECT 4;
|
|
||||||
4
|
|
||||||
4
|
|
||||||
connection default;
|
|
||||||
CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT);
|
|
||||||
CREATE TABLE t2 (id INT UNSIGNED NOT NULL);
|
|
||||||
INSERT INTO t1 VALUES
|
|
||||||
(0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0),
|
|
||||||
(0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0),
|
|
||||||
(0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0),
|
|
||||||
(0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0);
|
|
||||||
INSERT t1 SELECT 0 FROM t1 AS a1, t1 AS a2 LIMIT 4032;
|
|
||||||
INSERT INTO t2 SELECT id FROM t1;
|
|
||||||
connection con1;
|
|
||||||
connection con2;
|
|
||||||
connection con1;
|
|
||||||
SET DEBUG_SYNC= 'thread_end SIGNAL con1_end';
|
|
||||||
SET DEBUG_SYNC= 'before_acos_function SIGNAL in_sync';
|
|
||||||
SELECT id FROM t1 WHERE id IN
|
|
||||||
(SELECT DISTINCT a.id FROM t2 a, t2 b, t2 c, t2 d
|
|
||||||
GROUP BY ACOS(1/a.id), b.id, c.id, d.id
|
|
||||||
HAVING a.id BETWEEN 10 AND 20);
|
|
||||||
connection con2;
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
|
||||||
KILL @id;
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR con1_end';
|
|
||||||
connection con1;
|
|
||||||
Got one of the listed errors
|
|
||||||
SELECT 1;
|
|
||||||
1
|
|
||||||
1
|
|
||||||
connection default;
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
DROP TABLE t1, t2;
|
|
||||||
connection con1;
|
|
||||||
connection con2;
|
|
||||||
connection con1;
|
|
||||||
SET DEBUG_SYNC= 'before_acos_function SIGNAL in_sync WAIT_FOR kill';
|
|
||||||
SELECT ACOS(0);
|
|
||||||
connection con2;
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
|
||||||
KILL QUERY @id;
|
|
||||||
connection con1;
|
|
||||||
ACOS(0)
|
|
||||||
1.5707963267948966
|
|
||||||
SELECT 1;
|
|
||||||
1
|
|
||||||
1
|
|
||||||
SELECT @id = CONNECTION_ID();
|
|
||||||
@id = CONNECTION_ID()
|
|
||||||
1
|
|
||||||
connection default;
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
CREATE TABLE t1 (f1 INT);
|
|
||||||
CREATE FUNCTION bug27563() RETURNS INT(11)
|
|
||||||
DETERMINISTIC
|
|
||||||
BEGIN
|
|
||||||
DECLARE CONTINUE HANDLER FOR SQLSTATE '70100' SET @a:= 'killed';
|
|
||||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @a:= 'exception';
|
|
||||||
SET DEBUG_SYNC= 'now SIGNAL in_sync WAIT_FOR kill';
|
|
||||||
RETURN 1;
|
|
||||||
END|
|
|
||||||
connection con1;
|
|
||||||
connection con2;
|
|
||||||
connection con1;
|
|
||||||
INSERT INTO t1 VALUES (bug27563());
|
|
||||||
connection con2;
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
|
||||||
KILL QUERY @id;
|
|
||||||
connection con1;
|
|
||||||
ERROR 70100: Query execution was interrupted
|
|
||||||
SELECT * FROM t1;
|
|
||||||
f1
|
|
||||||
connection default;
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
INSERT INTO t1 VALUES(0);
|
|
||||||
connection con1;
|
|
||||||
UPDATE t1 SET f1= bug27563();
|
|
||||||
connection con2;
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
|
||||||
KILL QUERY @id;
|
|
||||||
connection con1;
|
|
||||||
ERROR 70100: Query execution was interrupted
|
|
||||||
SELECT * FROM t1;
|
|
||||||
f1
|
|
||||||
0
|
|
||||||
connection default;
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
INSERT INTO t1 VALUES(1);
|
|
||||||
connection con1;
|
|
||||||
DELETE FROM t1 WHERE bug27563() IS NULL;
|
|
||||||
connection con2;
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
|
||||||
KILL QUERY @id;
|
|
||||||
connection con1;
|
|
||||||
ERROR 70100: Query execution was interrupted
|
|
||||||
SELECT * FROM t1;
|
|
||||||
f1
|
|
||||||
0
|
|
||||||
1
|
|
||||||
connection default;
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
connection con1;
|
|
||||||
SELECT * FROM t1 WHERE f1= bug27563();
|
|
||||||
connection con2;
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
|
||||||
KILL QUERY @id;
|
|
||||||
connection con1;
|
|
||||||
ERROR 70100: Query execution was interrupted
|
|
||||||
SELECT * FROM t1;
|
|
||||||
f1
|
|
||||||
0
|
|
||||||
1
|
|
||||||
connection default;
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
DROP FUNCTION bug27563;
|
|
||||||
CREATE TABLE t2 (f2 INT);
|
|
||||||
CREATE TRIGGER trg27563 BEFORE INSERT ON t1 FOR EACH ROW
|
|
||||||
BEGIN
|
|
||||||
DECLARE CONTINUE HANDLER FOR SQLSTATE '70100' SET @a:= 'killed';
|
|
||||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @a:= 'exception';
|
|
||||||
INSERT INTO t2 VALUES(0);
|
|
||||||
SET DEBUG_SYNC= 'now SIGNAL in_sync WAIT_FOR kill';
|
|
||||||
INSERT INTO t2 VALUES(1);
|
|
||||||
END|
|
|
||||||
connection con1;
|
|
||||||
INSERT INTO t1 VALUES(2),(3);
|
|
||||||
connection con2;
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
|
||||||
KILL QUERY @id;
|
|
||||||
connection con1;
|
|
||||||
ERROR 70100: Query execution was interrupted
|
|
||||||
SELECT * FROM t1;
|
|
||||||
f1
|
|
||||||
0
|
|
||||||
1
|
|
||||||
SELECT * FROM t2;
|
|
||||||
f2
|
|
||||||
0
|
|
||||||
connection default;
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
DROP TABLE t1, t2;
|
|
||||||
#
|
|
||||||
# Bug#19723: kill of active connection yields different error code
|
|
||||||
# depending on platform.
|
|
||||||
#
|
|
||||||
connection con1;
|
|
||||||
SET DEBUG_SYNC= 'thread_end SIGNAL con1_end';
|
|
||||||
KILL @id;
|
|
||||||
ERROR 70100: Connection was killed
|
|
||||||
connection con2;
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR con1_end';
|
|
||||||
connection con1;
|
|
||||||
# ER_SERVER_SHUTDOWN, CR_SERVER_GONE_ERROR, CR_SERVER_LOST,
|
|
||||||
# depending on the timing of close of the connection socket
|
|
||||||
SELECT 1;
|
|
||||||
Got one of the listed errors
|
|
||||||
SELECT 1;
|
|
||||||
1
|
|
||||||
1
|
|
||||||
SELECT @id != CONNECTION_ID();
|
|
||||||
@id != CONNECTION_ID()
|
|
||||||
1
|
|
||||||
connection default;
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
#
|
#
|
||||||
# Additional test for WL#3726 "DDL locking for all metadata objects"
|
# Additional test for WL#3726 "DDL locking for all metadata objects"
|
||||||
# Check that DDL and DML statements waiting for metadata locks can
|
# Check that DDL and DML statements waiting for metadata locks can
|
||||||
@ -227,7 +9,6 @@ SET DEBUG_SYNC = 'RESET';
|
|||||||
# can be tricky to write test case for some of them (e.g. REPAIR or
|
# can be tricky to write test case for some of them (e.g. REPAIR or
|
||||||
# ALTER and other statements under LOCK TABLES).
|
# ALTER and other statements under LOCK TABLES).
|
||||||
#
|
#
|
||||||
drop tables if exists t1, t2, t3;
|
|
||||||
create table t1 (i int primary key);
|
create table t1 (i int primary key);
|
||||||
connect blocker, localhost, root, , ;
|
connect blocker, localhost, root, , ;
|
||||||
connect dml, localhost, root, , ;
|
connect dml, localhost, root, , ;
|
||||||
@ -380,9 +161,9 @@ connection default;
|
|||||||
ERROR 70100: Query execution was interrupted
|
ERROR 70100: Query execution was interrupted
|
||||||
disconnect con5;
|
disconnect con5;
|
||||||
DROP USER u1@localhost;
|
DROP USER u1@localhost;
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
DROP FUNCTION MY_KILL;
|
|
||||||
set global sql_mode=default;
|
set global sql_mode=default;
|
||||||
|
disconnect con1;
|
||||||
|
disconnect con2;
|
||||||
#
|
#
|
||||||
# MDEV-17998
|
# MDEV-17998
|
||||||
# Deadlock and eventual Assertion `!table->pos_in_locked_tables' failed
|
# Deadlock and eventual Assertion `!table->pos_in_locked_tables' failed
|
||||||
|
@ -8,294 +8,11 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
-- source include/not_embedded.inc
|
-- source include/not_embedded.inc
|
||||||
-- source include/have_debug_sync.inc
|
|
||||||
set local sql_mode="";
|
set local sql_mode="";
|
||||||
set global sql_mode="";
|
set global sql_mode="";
|
||||||
|
|
||||||
--disable_warnings
|
connect con1, localhost, root;
|
||||||
SET DEBUG_SYNC = 'RESET';
|
connect con2, localhost, root;
|
||||||
DROP TABLE IF EXISTS t1, t2, t3;
|
|
||||||
DROP FUNCTION IF EXISTS MY_KILL;
|
|
||||||
--enable_warnings
|
|
||||||
|
|
||||||
delimiter |;
|
|
||||||
# Helper function used to repeatedly kill a session.
|
|
||||||
CREATE FUNCTION MY_KILL(tid INT) RETURNS INT
|
|
||||||
BEGIN
|
|
||||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END;
|
|
||||||
KILL tid;
|
|
||||||
RETURN (SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID = tid);
|
|
||||||
END|
|
|
||||||
delimiter ;|
|
|
||||||
|
|
||||||
connect (con1, localhost, root,,);
|
|
||||||
connect (con2, localhost, root,,);
|
|
||||||
|
|
||||||
# Save id of con1
|
|
||||||
connection con1;
|
|
||||||
--disable_reconnect
|
|
||||||
let $ID= `SELECT @id := CONNECTION_ID()`;
|
|
||||||
connection con2;
|
|
||||||
let $ignore= `SELECT @id := $ID`;
|
|
||||||
connection con1;
|
|
||||||
# Signal when this connection is terminating.
|
|
||||||
SET DEBUG_SYNC= 'thread_end SIGNAL con1_end';
|
|
||||||
# See if we can kill read().
|
|
||||||
# Run into read() immediately after hitting 'before_do_command_net_read'.
|
|
||||||
SET DEBUG_SYNC= 'before_do_command_net_read SIGNAL con1_read';
|
|
||||||
|
|
||||||
# Kill con1
|
|
||||||
connection con2;
|
|
||||||
SET DEBUG_SYNC='now WAIT_FOR con1_read';
|
|
||||||
# At this point we have no way to figure out, when con1 is blocked in
|
|
||||||
# reading from the socket. Sending KILL to early would not terminate
|
|
||||||
# con1. So we repeat KILL until con1 terminates.
|
|
||||||
let $wait_condition= SELECT MY_KILL(@id);
|
|
||||||
--source include/wait_condition.inc
|
|
||||||
# If KILL missed the read(), sync point wait will time out.
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR con1_end';
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
|
|
||||||
connection con1;
|
|
||||||
--error 1053,2006,2013,5014
|
|
||||||
SELECT 1;
|
|
||||||
|
|
||||||
--enable_reconnect
|
|
||||||
# this should work, and we should have a new connection_id()
|
|
||||||
SELECT 1;
|
|
||||||
let $ignore= `SELECT @id := $ID`;
|
|
||||||
SELECT @id != CONNECTION_ID();
|
|
||||||
|
|
||||||
#make sure the server is still alive
|
|
||||||
connection con2;
|
|
||||||
SELECT 4;
|
|
||||||
connection default;
|
|
||||||
|
|
||||||
--error ER_SUBQUERIES_NOT_SUPPORTED
|
|
||||||
KILL (SELECT COUNT(*) FROM mysql.user);
|
|
||||||
|
|
||||||
connection con1;
|
|
||||||
let $ID= `SELECT @id := CONNECTION_ID()`;
|
|
||||||
connection con2;
|
|
||||||
let $ignore= `SELECT @id := $ID`;
|
|
||||||
connection con1;
|
|
||||||
disable_reconnect;
|
|
||||||
# Signal when this connection is terminating.
|
|
||||||
SET DEBUG_SYNC= 'thread_end SIGNAL con1_end';
|
|
||||||
# See if we can kill the sync point itself.
|
|
||||||
# Wait in 'before_do_command_net_read' until killed.
|
|
||||||
# It doesn't wait for a signal 'kill' but for to be killed.
|
|
||||||
# The signal name doesn't matter here.
|
|
||||||
SET DEBUG_SYNC= 'before_do_command_net_read SIGNAL con1_read WAIT_FOR kill';
|
|
||||||
connection con2;
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR con1_read';
|
|
||||||
# Repeat KILL until con1 terminates.
|
|
||||||
let $wait_condition= SELECT MY_KILL(@id);
|
|
||||||
--source include/wait_condition.inc
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR con1_end';
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
|
|
||||||
connection con1;
|
|
||||||
--error 1053,2006,2013,5014
|
|
||||||
SELECT 1;
|
|
||||||
enable_reconnect;
|
|
||||||
SELECT 1;
|
|
||||||
let $ignore= `SELECT @id := $ID`;
|
|
||||||
SELECT @id != CONNECTION_ID();
|
|
||||||
connection con2;
|
|
||||||
SELECT 4;
|
|
||||||
connection default;
|
|
||||||
|
|
||||||
#
|
|
||||||
# BUG#14851: killing long running subquery processed via a temporary table.
|
|
||||||
#
|
|
||||||
|
|
||||||
CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT);
|
|
||||||
CREATE TABLE t2 (id INT UNSIGNED NOT NULL);
|
|
||||||
|
|
||||||
INSERT INTO t1 VALUES
|
|
||||||
(0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0),
|
|
||||||
(0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0),
|
|
||||||
(0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0),
|
|
||||||
(0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0);
|
|
||||||
INSERT t1 SELECT 0 FROM t1 AS a1, t1 AS a2 LIMIT 4032;
|
|
||||||
|
|
||||||
INSERT INTO t2 SELECT id FROM t1;
|
|
||||||
|
|
||||||
connection con1;
|
|
||||||
let $ID= `SELECT @id := CONNECTION_ID()`;
|
|
||||||
connection con2;
|
|
||||||
let $ignore= `SELECT @id := $ID`;
|
|
||||||
|
|
||||||
connection con1;
|
|
||||||
SET DEBUG_SYNC= 'thread_end SIGNAL con1_end';
|
|
||||||
SET DEBUG_SYNC= 'before_acos_function SIGNAL in_sync';
|
|
||||||
# This is a very long running query. If this test start failing,
|
|
||||||
# it may be necessary to change to an even longer query.
|
|
||||||
send SELECT id FROM t1 WHERE id IN
|
|
||||||
(SELECT DISTINCT a.id FROM t2 a, t2 b, t2 c, t2 d
|
|
||||||
GROUP BY ACOS(1/a.id), b.id, c.id, d.id
|
|
||||||
HAVING a.id BETWEEN 10 AND 20);
|
|
||||||
|
|
||||||
connection con2;
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
|
||||||
KILL @id;
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR con1_end';
|
|
||||||
|
|
||||||
connection con1;
|
|
||||||
--error 1317,1053,2006,2013,5014
|
|
||||||
reap;
|
|
||||||
SELECT 1;
|
|
||||||
|
|
||||||
connection default;
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
DROP TABLE t1, t2;
|
|
||||||
|
|
||||||
#
|
|
||||||
# Test of blocking of sending ERROR after OK or EOF
|
|
||||||
#
|
|
||||||
connection con1;
|
|
||||||
let $ID= `SELECT @id := CONNECTION_ID()`;
|
|
||||||
connection con2;
|
|
||||||
let $ignore= `SELECT @id := $ID`;
|
|
||||||
connection con1;
|
|
||||||
SET DEBUG_SYNC= 'before_acos_function SIGNAL in_sync WAIT_FOR kill';
|
|
||||||
send SELECT ACOS(0);
|
|
||||||
connection con2;
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
|
||||||
KILL QUERY @id;
|
|
||||||
connection con1;
|
|
||||||
reap;
|
|
||||||
SELECT 1;
|
|
||||||
SELECT @id = CONNECTION_ID();
|
|
||||||
connection default;
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
|
|
||||||
#
|
|
||||||
# Bug#27563: Stored functions and triggers wasn't throwing an error when killed.
|
|
||||||
#
|
|
||||||
CREATE TABLE t1 (f1 INT);
|
|
||||||
delimiter |;
|
|
||||||
CREATE FUNCTION bug27563() RETURNS INT(11)
|
|
||||||
DETERMINISTIC
|
|
||||||
BEGIN
|
|
||||||
DECLARE CONTINUE HANDLER FOR SQLSTATE '70100' SET @a:= 'killed';
|
|
||||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @a:= 'exception';
|
|
||||||
SET DEBUG_SYNC= 'now SIGNAL in_sync WAIT_FOR kill';
|
|
||||||
RETURN 1;
|
|
||||||
END|
|
|
||||||
delimiter ;|
|
|
||||||
# Test stored functions
|
|
||||||
# Test INSERT
|
|
||||||
connection con1;
|
|
||||||
let $ID= `SELECT @id := CONNECTION_ID()`;
|
|
||||||
connection con2;
|
|
||||||
let $ignore= `SELECT @id := $ID`;
|
|
||||||
connection con1;
|
|
||||||
send INSERT INTO t1 VALUES (bug27563());
|
|
||||||
connection con2;
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
|
||||||
KILL QUERY @id;
|
|
||||||
connection con1;
|
|
||||||
--error 1317
|
|
||||||
reap;
|
|
||||||
SELECT * FROM t1;
|
|
||||||
connection default;
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
|
|
||||||
# Test UPDATE
|
|
||||||
INSERT INTO t1 VALUES(0);
|
|
||||||
connection con1;
|
|
||||||
send UPDATE t1 SET f1= bug27563();
|
|
||||||
connection con2;
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
|
||||||
KILL QUERY @id;
|
|
||||||
connection con1;
|
|
||||||
--error 1317
|
|
||||||
reap;
|
|
||||||
SELECT * FROM t1;
|
|
||||||
connection default;
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
|
|
||||||
# Test DELETE
|
|
||||||
INSERT INTO t1 VALUES(1);
|
|
||||||
connection con1;
|
|
||||||
send DELETE FROM t1 WHERE bug27563() IS NULL;
|
|
||||||
connection con2;
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
|
||||||
KILL QUERY @id;
|
|
||||||
connection con1;
|
|
||||||
--error 1317
|
|
||||||
reap;
|
|
||||||
SELECT * FROM t1;
|
|
||||||
connection default;
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
|
|
||||||
# Test SELECT
|
|
||||||
connection con1;
|
|
||||||
send SELECT * FROM t1 WHERE f1= bug27563();
|
|
||||||
connection con2;
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
|
||||||
KILL QUERY @id;
|
|
||||||
connection con1;
|
|
||||||
--error 1317
|
|
||||||
reap;
|
|
||||||
SELECT * FROM t1;
|
|
||||||
connection default;
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
DROP FUNCTION bug27563;
|
|
||||||
|
|
||||||
# Test TRIGGERS
|
|
||||||
CREATE TABLE t2 (f2 INT);
|
|
||||||
delimiter |;
|
|
||||||
CREATE TRIGGER trg27563 BEFORE INSERT ON t1 FOR EACH ROW
|
|
||||||
BEGIN
|
|
||||||
DECLARE CONTINUE HANDLER FOR SQLSTATE '70100' SET @a:= 'killed';
|
|
||||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @a:= 'exception';
|
|
||||||
INSERT INTO t2 VALUES(0);
|
|
||||||
SET DEBUG_SYNC= 'now SIGNAL in_sync WAIT_FOR kill';
|
|
||||||
INSERT INTO t2 VALUES(1);
|
|
||||||
END|
|
|
||||||
delimiter ;|
|
|
||||||
connection con1;
|
|
||||||
send INSERT INTO t1 VALUES(2),(3);
|
|
||||||
connection con2;
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
|
||||||
KILL QUERY @id;
|
|
||||||
connection con1;
|
|
||||||
--error 1317
|
|
||||||
reap;
|
|
||||||
SELECT * FROM t1;
|
|
||||||
SELECT * FROM t2;
|
|
||||||
connection default;
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
DROP TABLE t1, t2;
|
|
||||||
|
|
||||||
--echo #
|
|
||||||
--echo # Bug#19723: kill of active connection yields different error code
|
|
||||||
--echo # depending on platform.
|
|
||||||
--echo #
|
|
||||||
|
|
||||||
--connection con1
|
|
||||||
let $ID= `SELECT @id := CONNECTION_ID()`;
|
|
||||||
SET DEBUG_SYNC= 'thread_end SIGNAL con1_end';
|
|
||||||
--disable_reconnect
|
|
||||||
--error ER_CONNECTION_KILLED
|
|
||||||
KILL @id;
|
|
||||||
|
|
||||||
connection con2;
|
|
||||||
SET DEBUG_SYNC= 'now WAIT_FOR con1_end';
|
|
||||||
connection con1;
|
|
||||||
--echo # ER_SERVER_SHUTDOWN, CR_SERVER_GONE_ERROR, CR_SERVER_LOST,
|
|
||||||
--echo # depending on the timing of close of the connection socket
|
|
||||||
--error 1053,2006,2013,5014
|
|
||||||
SELECT 1;
|
|
||||||
--enable_reconnect
|
|
||||||
SELECT 1;
|
|
||||||
let $ignore= `SELECT @id := $ID`;
|
|
||||||
SELECT @id != CONNECTION_ID();
|
|
||||||
connection default;
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Additional test for WL#3726 "DDL locking for all metadata objects"
|
--echo # Additional test for WL#3726 "DDL locking for all metadata objects"
|
||||||
@ -304,9 +21,6 @@ SET DEBUG_SYNC = 'RESET';
|
|||||||
--echo # can be tricky to write test case for some of them (e.g. REPAIR or
|
--echo # can be tricky to write test case for some of them (e.g. REPAIR or
|
||||||
--echo # ALTER and other statements under LOCK TABLES).
|
--echo # ALTER and other statements under LOCK TABLES).
|
||||||
--echo #
|
--echo #
|
||||||
--disable_warnings
|
|
||||||
drop tables if exists t1, t2, t3;
|
|
||||||
--enable_warnings
|
|
||||||
|
|
||||||
create table t1 (i int primary key);
|
create table t1 (i int primary key);
|
||||||
connect (blocker, localhost, root, , );
|
connect (blocker, localhost, root, , );
|
||||||
@ -503,6 +217,7 @@ drop table t2;
|
|||||||
--echo #
|
--echo #
|
||||||
--echo # Test kill USER
|
--echo # Test kill USER
|
||||||
--echo #
|
--echo #
|
||||||
|
--source include/count_sessions.inc
|
||||||
grant ALL on test.* to test@localhost;
|
grant ALL on test.* to test@localhost;
|
||||||
grant ALL on test.* to test2@localhost;
|
grant ALL on test.* to test2@localhost;
|
||||||
connect (con3, localhost, test,,);
|
connect (con3, localhost, test,,);
|
||||||
@ -527,6 +242,7 @@ connection con4;
|
|||||||
--error 2013,2006,5014
|
--error 2013,2006,5014
|
||||||
select 1;
|
select 1;
|
||||||
connection default;
|
connection default;
|
||||||
|
--source include/wait_until_count_sessions.inc
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # MDEV-4911 - add KILL query id, and add query id information to
|
--echo # MDEV-4911 - add KILL query id, and add query id information to
|
||||||
@ -570,11 +286,9 @@ reap;
|
|||||||
disconnect con5;
|
disconnect con5;
|
||||||
DROP USER u1@localhost;
|
DROP USER u1@localhost;
|
||||||
|
|
||||||
|
|
||||||
SET DEBUG_SYNC = 'RESET';
|
|
||||||
DROP FUNCTION MY_KILL;
|
|
||||||
|
|
||||||
set global sql_mode=default;
|
set global sql_mode=default;
|
||||||
|
disconnect con1;
|
||||||
|
disconnect con2;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # MDEV-17998
|
--echo # MDEV-17998
|
||||||
|
239
mysql-test/main/kill_debug.result
Normal file
239
mysql-test/main/kill_debug.result
Normal file
@ -0,0 +1,239 @@
|
|||||||
|
set local sql_mode="";
|
||||||
|
set global sql_mode="";
|
||||||
|
CREATE FUNCTION MY_KILL(tid INT) RETURNS INT
|
||||||
|
BEGIN
|
||||||
|
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END;
|
||||||
|
KILL tid;
|
||||||
|
RETURN (SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID = tid);
|
||||||
|
END|
|
||||||
|
connect con1, localhost, root;
|
||||||
|
connect con2, localhost, root;
|
||||||
|
connection con1;
|
||||||
|
connection con2;
|
||||||
|
connection con1;
|
||||||
|
SET DEBUG_SYNC= 'thread_end SIGNAL con1_end';
|
||||||
|
SET DEBUG_SYNC= 'before_do_command_net_read SIGNAL con1_read';
|
||||||
|
connection con2;
|
||||||
|
SET DEBUG_SYNC='now WAIT_FOR con1_read';
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR con1_end';
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
connection con1;
|
||||||
|
SELECT 1;
|
||||||
|
Got one of the listed errors
|
||||||
|
SELECT 1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT @id != CONNECTION_ID();
|
||||||
|
@id != CONNECTION_ID()
|
||||||
|
1
|
||||||
|
connection con2;
|
||||||
|
SELECT 4;
|
||||||
|
4
|
||||||
|
4
|
||||||
|
connection default;
|
||||||
|
KILL (SELECT COUNT(*) FROM mysql.user);
|
||||||
|
ERROR 42000: KILL does not support subqueries or stored functions
|
||||||
|
connection con1;
|
||||||
|
connection con2;
|
||||||
|
connection con1;
|
||||||
|
SET DEBUG_SYNC= 'thread_end SIGNAL con1_end';
|
||||||
|
SET DEBUG_SYNC= 'before_do_command_net_read SIGNAL con1_read WAIT_FOR kill';
|
||||||
|
connection con2;
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR con1_read';
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR con1_end';
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
connection con1;
|
||||||
|
SELECT 1;
|
||||||
|
Got one of the listed errors
|
||||||
|
SELECT 1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT @id != CONNECTION_ID();
|
||||||
|
@id != CONNECTION_ID()
|
||||||
|
1
|
||||||
|
connection con2;
|
||||||
|
SELECT 4;
|
||||||
|
4
|
||||||
|
4
|
||||||
|
connection default;
|
||||||
|
CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT);
|
||||||
|
CREATE TABLE t2 (id INT UNSIGNED NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0),
|
||||||
|
(0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0),
|
||||||
|
(0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0),
|
||||||
|
(0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0);
|
||||||
|
INSERT t1 SELECT 0 FROM t1 AS a1, t1 AS a2 LIMIT 4032;
|
||||||
|
INSERT INTO t2 SELECT id FROM t1;
|
||||||
|
connection con1;
|
||||||
|
connection con2;
|
||||||
|
connection con1;
|
||||||
|
SET DEBUG_SYNC= 'thread_end SIGNAL con1_end';
|
||||||
|
SET DEBUG_SYNC= 'before_acos_function SIGNAL in_sync';
|
||||||
|
SELECT id FROM t1 WHERE id IN
|
||||||
|
(SELECT DISTINCT a.id FROM t2 a, t2 b, t2 c, t2 d
|
||||||
|
GROUP BY ACOS(1/a.id), b.id, c.id, d.id
|
||||||
|
HAVING a.id BETWEEN 10 AND 20);
|
||||||
|
connection con2;
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
||||||
|
KILL @id;
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR con1_end';
|
||||||
|
connection con1;
|
||||||
|
Got one of the listed errors
|
||||||
|
SELECT 1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
connection default;
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
connection con1;
|
||||||
|
connection con2;
|
||||||
|
connection con1;
|
||||||
|
SET DEBUG_SYNC= 'before_acos_function SIGNAL in_sync WAIT_FOR kill';
|
||||||
|
SELECT ACOS(0);
|
||||||
|
connection con2;
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
||||||
|
KILL QUERY @id;
|
||||||
|
connection con1;
|
||||||
|
ACOS(0)
|
||||||
|
1.5707963267948966
|
||||||
|
SELECT 1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT @id = CONNECTION_ID();
|
||||||
|
@id = CONNECTION_ID()
|
||||||
|
1
|
||||||
|
connection default;
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
CREATE TABLE t1 (f1 INT);
|
||||||
|
CREATE FUNCTION bug27563() RETURNS INT(11)
|
||||||
|
DETERMINISTIC
|
||||||
|
BEGIN
|
||||||
|
DECLARE CONTINUE HANDLER FOR SQLSTATE '70100' SET @a:= 'killed';
|
||||||
|
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @a:= 'exception';
|
||||||
|
SET DEBUG_SYNC= 'now SIGNAL in_sync WAIT_FOR kill';
|
||||||
|
RETURN 1;
|
||||||
|
END|
|
||||||
|
connection con1;
|
||||||
|
connection con2;
|
||||||
|
connection con1;
|
||||||
|
INSERT INTO t1 VALUES (bug27563());
|
||||||
|
connection con2;
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
||||||
|
KILL QUERY @id;
|
||||||
|
connection con1;
|
||||||
|
ERROR 70100: Query execution was interrupted
|
||||||
|
SELECT * FROM t1;
|
||||||
|
f1
|
||||||
|
connection default;
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
INSERT INTO t1 VALUES(0);
|
||||||
|
connection con1;
|
||||||
|
UPDATE t1 SET f1= bug27563();
|
||||||
|
connection con2;
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
||||||
|
KILL QUERY @id;
|
||||||
|
connection con1;
|
||||||
|
ERROR 70100: Query execution was interrupted
|
||||||
|
SELECT * FROM t1;
|
||||||
|
f1
|
||||||
|
0
|
||||||
|
connection default;
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
INSERT INTO t1 VALUES(1);
|
||||||
|
connection con1;
|
||||||
|
DELETE FROM t1 WHERE bug27563() IS NULL;
|
||||||
|
connection con2;
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
||||||
|
KILL QUERY @id;
|
||||||
|
connection con1;
|
||||||
|
ERROR 70100: Query execution was interrupted
|
||||||
|
SELECT * FROM t1;
|
||||||
|
f1
|
||||||
|
0
|
||||||
|
1
|
||||||
|
connection default;
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
connection con1;
|
||||||
|
SELECT * FROM t1 WHERE f1= bug27563();
|
||||||
|
connection con2;
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
||||||
|
KILL QUERY @id;
|
||||||
|
connection con1;
|
||||||
|
ERROR 70100: Query execution was interrupted
|
||||||
|
SELECT * FROM t1;
|
||||||
|
f1
|
||||||
|
0
|
||||||
|
1
|
||||||
|
connection default;
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
DROP FUNCTION bug27563;
|
||||||
|
CREATE TABLE t2 (f2 INT);
|
||||||
|
CREATE TRIGGER trg27563 BEFORE INSERT ON t1 FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
DECLARE CONTINUE HANDLER FOR SQLSTATE '70100' SET @a:= 'killed';
|
||||||
|
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @a:= 'exception';
|
||||||
|
INSERT INTO t2 VALUES(0);
|
||||||
|
SET DEBUG_SYNC= 'now SIGNAL in_sync WAIT_FOR kill';
|
||||||
|
INSERT INTO t2 VALUES(1);
|
||||||
|
END|
|
||||||
|
connection con1;
|
||||||
|
INSERT INTO t1 VALUES(2),(3);
|
||||||
|
connection con2;
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
||||||
|
KILL QUERY @id;
|
||||||
|
connection con1;
|
||||||
|
ERROR 70100: Query execution was interrupted
|
||||||
|
SELECT * FROM t1;
|
||||||
|
f1
|
||||||
|
0
|
||||||
|
1
|
||||||
|
SELECT * FROM t2;
|
||||||
|
f2
|
||||||
|
0
|
||||||
|
connection default;
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
#
|
||||||
|
# Bug#19723: kill of active connection yields different error code
|
||||||
|
# depending on platform.
|
||||||
|
#
|
||||||
|
connection con1;
|
||||||
|
SET DEBUG_SYNC= 'thread_end SIGNAL con1_end';
|
||||||
|
KILL @id;
|
||||||
|
ERROR 70100: Connection was killed
|
||||||
|
connection con2;
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR con1_end';
|
||||||
|
connection con1;
|
||||||
|
# ER_SERVER_SHUTDOWN, CR_SERVER_GONE_ERROR, CR_SERVER_LOST,
|
||||||
|
# depending on the timing of close of the connection socket
|
||||||
|
SELECT 1;
|
||||||
|
Got one of the listed errors
|
||||||
|
SELECT 1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT @id != CONNECTION_ID();
|
||||||
|
@id != CONNECTION_ID()
|
||||||
|
1
|
||||||
|
connection default;
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
DROP FUNCTION MY_KILL;
|
||||||
|
set global sql_mode=default;
|
||||||
|
disconnect con1;
|
||||||
|
disconnect con2;
|
||||||
|
#
|
||||||
|
# MDEV-29368 Assertion `trx->mysql_thd == thd' failed in innobase_kill_query from process_timers/timer_handler and use-after-poison in innobase_kill_query
|
||||||
|
#
|
||||||
|
connect foo,localhost,root;
|
||||||
|
create table t1 (a int) engine=innodb;
|
||||||
|
insert t1 values (1);
|
||||||
|
set debug_sync='THD_cleanup_after_set_killed SIGNAL go0 WAIT_FOR go1';
|
||||||
|
set debug_sync='innobase_connection_closed SIGNAL go2 WAIT_FOR go3';
|
||||||
|
disconnect foo;
|
||||||
|
connection default;
|
||||||
|
set debug_sync='now WAIT_FOR go0';
|
||||||
|
set debug_sync='found_killee SIGNAL go1 WAIT_FOR go2';
|
||||||
|
kill $id;
|
||||||
|
set debug_sync='now SIGNAL go3';
|
||||||
|
drop table t1;
|
||||||
|
set debug_sync='reset';
|
318
mysql-test/main/kill_debug.test
Normal file
318
mysql-test/main/kill_debug.test
Normal file
@ -0,0 +1,318 @@
|
|||||||
|
#
|
||||||
|
# Test KILL and KILL QUERY statements.
|
||||||
|
#
|
||||||
|
# Killing a connection in an embedded server does not work like in a normal
|
||||||
|
# server, if it is waiting for a new statement. In an embedded server, the
|
||||||
|
# connection does not read() from a socket, but returns control to the
|
||||||
|
# application. 'mysqltest' does not handle the kill request.
|
||||||
|
#
|
||||||
|
|
||||||
|
-- source include/not_embedded.inc
|
||||||
|
-- source include/have_debug_sync.inc
|
||||||
|
-- source include/have_innodb.inc
|
||||||
|
set local sql_mode="";
|
||||||
|
set global sql_mode="";
|
||||||
|
|
||||||
|
delimiter |;
|
||||||
|
# Helper function used to repeatedly kill a session.
|
||||||
|
CREATE FUNCTION MY_KILL(tid INT) RETURNS INT
|
||||||
|
BEGIN
|
||||||
|
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END;
|
||||||
|
KILL tid;
|
||||||
|
RETURN (SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID = tid);
|
||||||
|
END|
|
||||||
|
delimiter ;|
|
||||||
|
|
||||||
|
connect con1, localhost, root;
|
||||||
|
connect con2, localhost, root;
|
||||||
|
|
||||||
|
# Save id of con1
|
||||||
|
connection con1;
|
||||||
|
--disable_reconnect
|
||||||
|
let $ID= `SELECT @id := CONNECTION_ID()`;
|
||||||
|
connection con2;
|
||||||
|
let $ignore= `SELECT @id := $ID`;
|
||||||
|
connection con1;
|
||||||
|
# Signal when this connection is terminating.
|
||||||
|
SET DEBUG_SYNC= 'thread_end SIGNAL con1_end';
|
||||||
|
# See if we can kill read().
|
||||||
|
# Run into read() immediately after hitting 'before_do_command_net_read'.
|
||||||
|
SET DEBUG_SYNC= 'before_do_command_net_read SIGNAL con1_read';
|
||||||
|
|
||||||
|
# Kill con1
|
||||||
|
connection con2;
|
||||||
|
SET DEBUG_SYNC='now WAIT_FOR con1_read';
|
||||||
|
# At this point we have no way to figure out, when con1 is blocked in
|
||||||
|
# reading from the socket. Sending KILL to early would not terminate
|
||||||
|
# con1. So we repeat KILL until con1 terminates.
|
||||||
|
let $wait_condition= SELECT MY_KILL(@id);
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
# If KILL missed the read(), sync point wait will time out.
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR con1_end';
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
--error 1053,2006,2013,5014
|
||||||
|
SELECT 1;
|
||||||
|
|
||||||
|
--enable_reconnect
|
||||||
|
# this should work, and we should have a new connection_id()
|
||||||
|
SELECT 1;
|
||||||
|
let $ignore= `SELECT @id := $ID`;
|
||||||
|
SELECT @id != CONNECTION_ID();
|
||||||
|
|
||||||
|
#make sure the server is still alive
|
||||||
|
connection con2;
|
||||||
|
SELECT 4;
|
||||||
|
connection default;
|
||||||
|
|
||||||
|
--error ER_SUBQUERIES_NOT_SUPPORTED
|
||||||
|
KILL (SELECT COUNT(*) FROM mysql.user);
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
let $ID= `SELECT @id := CONNECTION_ID()`;
|
||||||
|
connection con2;
|
||||||
|
let $ignore= `SELECT @id := $ID`;
|
||||||
|
connection con1;
|
||||||
|
disable_reconnect;
|
||||||
|
# Signal when this connection is terminating.
|
||||||
|
SET DEBUG_SYNC= 'thread_end SIGNAL con1_end';
|
||||||
|
# See if we can kill the sync point itself.
|
||||||
|
# Wait in 'before_do_command_net_read' until killed.
|
||||||
|
# It doesn't wait for a signal 'kill' but for to be killed.
|
||||||
|
# The signal name doesn't matter here.
|
||||||
|
SET DEBUG_SYNC= 'before_do_command_net_read SIGNAL con1_read WAIT_FOR kill';
|
||||||
|
connection con2;
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR con1_read';
|
||||||
|
# Repeat KILL until con1 terminates.
|
||||||
|
let $wait_condition= SELECT MY_KILL(@id);
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR con1_end';
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
--error 1053,2006,2013,5014
|
||||||
|
SELECT 1;
|
||||||
|
enable_reconnect;
|
||||||
|
SELECT 1;
|
||||||
|
let $ignore= `SELECT @id := $ID`;
|
||||||
|
SELECT @id != CONNECTION_ID();
|
||||||
|
connection con2;
|
||||||
|
SELECT 4;
|
||||||
|
connection default;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#14851: killing long running subquery processed via a temporary table.
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT);
|
||||||
|
CREATE TABLE t2 (id INT UNSIGNED NOT NULL);
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0),
|
||||||
|
(0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0),
|
||||||
|
(0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0),
|
||||||
|
(0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0);
|
||||||
|
INSERT t1 SELECT 0 FROM t1 AS a1, t1 AS a2 LIMIT 4032;
|
||||||
|
|
||||||
|
INSERT INTO t2 SELECT id FROM t1;
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
let $ID= `SELECT @id := CONNECTION_ID()`;
|
||||||
|
connection con2;
|
||||||
|
let $ignore= `SELECT @id := $ID`;
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
SET DEBUG_SYNC= 'thread_end SIGNAL con1_end';
|
||||||
|
SET DEBUG_SYNC= 'before_acos_function SIGNAL in_sync';
|
||||||
|
# This is a very long running query. If this test start failing,
|
||||||
|
# it may be necessary to change to an even longer query.
|
||||||
|
send SELECT id FROM t1 WHERE id IN
|
||||||
|
(SELECT DISTINCT a.id FROM t2 a, t2 b, t2 c, t2 d
|
||||||
|
GROUP BY ACOS(1/a.id), b.id, c.id, d.id
|
||||||
|
HAVING a.id BETWEEN 10 AND 20);
|
||||||
|
|
||||||
|
connection con2;
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
||||||
|
KILL @id;
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR con1_end';
|
||||||
|
|
||||||
|
connection con1;
|
||||||
|
--error 1317,1053,2006,2013,5014
|
||||||
|
reap;
|
||||||
|
SELECT 1;
|
||||||
|
|
||||||
|
connection default;
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test of blocking of sending ERROR after OK or EOF
|
||||||
|
#
|
||||||
|
connection con1;
|
||||||
|
let $ID= `SELECT @id := CONNECTION_ID()`;
|
||||||
|
connection con2;
|
||||||
|
let $ignore= `SELECT @id := $ID`;
|
||||||
|
connection con1;
|
||||||
|
SET DEBUG_SYNC= 'before_acos_function SIGNAL in_sync WAIT_FOR kill';
|
||||||
|
send SELECT ACOS(0);
|
||||||
|
connection con2;
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
||||||
|
KILL QUERY @id;
|
||||||
|
connection con1;
|
||||||
|
reap;
|
||||||
|
SELECT 1;
|
||||||
|
SELECT @id = CONNECTION_ID();
|
||||||
|
connection default;
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#27563: Stored functions and triggers wasn't throwing an error when killed.
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (f1 INT);
|
||||||
|
delimiter |;
|
||||||
|
CREATE FUNCTION bug27563() RETURNS INT(11)
|
||||||
|
DETERMINISTIC
|
||||||
|
BEGIN
|
||||||
|
DECLARE CONTINUE HANDLER FOR SQLSTATE '70100' SET @a:= 'killed';
|
||||||
|
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @a:= 'exception';
|
||||||
|
SET DEBUG_SYNC= 'now SIGNAL in_sync WAIT_FOR kill';
|
||||||
|
RETURN 1;
|
||||||
|
END|
|
||||||
|
delimiter ;|
|
||||||
|
# Test stored functions
|
||||||
|
# Test INSERT
|
||||||
|
connection con1;
|
||||||
|
let $ID= `SELECT @id := CONNECTION_ID()`;
|
||||||
|
connection con2;
|
||||||
|
let $ignore= `SELECT @id := $ID`;
|
||||||
|
connection con1;
|
||||||
|
send INSERT INTO t1 VALUES (bug27563());
|
||||||
|
connection con2;
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
||||||
|
KILL QUERY @id;
|
||||||
|
connection con1;
|
||||||
|
--error 1317
|
||||||
|
reap;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
connection default;
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
|
||||||
|
# Test UPDATE
|
||||||
|
INSERT INTO t1 VALUES(0);
|
||||||
|
connection con1;
|
||||||
|
send UPDATE t1 SET f1= bug27563();
|
||||||
|
connection con2;
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
||||||
|
KILL QUERY @id;
|
||||||
|
connection con1;
|
||||||
|
--error 1317
|
||||||
|
reap;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
connection default;
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
|
||||||
|
# Test DELETE
|
||||||
|
INSERT INTO t1 VALUES(1);
|
||||||
|
connection con1;
|
||||||
|
send DELETE FROM t1 WHERE bug27563() IS NULL;
|
||||||
|
connection con2;
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
||||||
|
KILL QUERY @id;
|
||||||
|
connection con1;
|
||||||
|
--error 1317
|
||||||
|
reap;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
connection default;
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
|
||||||
|
# Test SELECT
|
||||||
|
connection con1;
|
||||||
|
send SELECT * FROM t1 WHERE f1= bug27563();
|
||||||
|
connection con2;
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
||||||
|
KILL QUERY @id;
|
||||||
|
connection con1;
|
||||||
|
--error 1317
|
||||||
|
reap;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
connection default;
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
DROP FUNCTION bug27563;
|
||||||
|
|
||||||
|
# Test TRIGGERS
|
||||||
|
CREATE TABLE t2 (f2 INT);
|
||||||
|
delimiter |;
|
||||||
|
CREATE TRIGGER trg27563 BEFORE INSERT ON t1 FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
DECLARE CONTINUE HANDLER FOR SQLSTATE '70100' SET @a:= 'killed';
|
||||||
|
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @a:= 'exception';
|
||||||
|
INSERT INTO t2 VALUES(0);
|
||||||
|
SET DEBUG_SYNC= 'now SIGNAL in_sync WAIT_FOR kill';
|
||||||
|
INSERT INTO t2 VALUES(1);
|
||||||
|
END|
|
||||||
|
delimiter ;|
|
||||||
|
connection con1;
|
||||||
|
send INSERT INTO t1 VALUES(2),(3);
|
||||||
|
connection con2;
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
||||||
|
KILL QUERY @id;
|
||||||
|
connection con1;
|
||||||
|
--error 1317
|
||||||
|
reap;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
SELECT * FROM t2;
|
||||||
|
connection default;
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#19723: kill of active connection yields different error code
|
||||||
|
--echo # depending on platform.
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--connection con1
|
||||||
|
let $ID= `SELECT @id := CONNECTION_ID()`;
|
||||||
|
SET DEBUG_SYNC= 'thread_end SIGNAL con1_end';
|
||||||
|
--disable_reconnect
|
||||||
|
--error ER_CONNECTION_KILLED
|
||||||
|
KILL @id;
|
||||||
|
|
||||||
|
connection con2;
|
||||||
|
SET DEBUG_SYNC= 'now WAIT_FOR con1_end';
|
||||||
|
connection con1;
|
||||||
|
--echo # ER_SERVER_SHUTDOWN, CR_SERVER_GONE_ERROR, CR_SERVER_LOST,
|
||||||
|
--echo # depending on the timing of close of the connection socket
|
||||||
|
--error 1053,2006,2013,5014
|
||||||
|
SELECT 1;
|
||||||
|
--enable_reconnect
|
||||||
|
SELECT 1;
|
||||||
|
let $ignore= `SELECT @id := $ID`;
|
||||||
|
SELECT @id != CONNECTION_ID();
|
||||||
|
connection default;
|
||||||
|
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
DROP FUNCTION MY_KILL;
|
||||||
|
|
||||||
|
set global sql_mode=default;
|
||||||
|
disconnect con1;
|
||||||
|
disconnect con2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-29368 Assertion `trx->mysql_thd == thd' failed in innobase_kill_query from process_timers/timer_handler and use-after-poison in innobase_kill_query
|
||||||
|
--echo #
|
||||||
|
connect foo,localhost,root;
|
||||||
|
let $id=`select connection_id()`;
|
||||||
|
create table t1 (a int) engine=innodb;
|
||||||
|
insert t1 values (1);
|
||||||
|
set debug_sync='THD_cleanup_after_set_killed SIGNAL go0 WAIT_FOR go1';
|
||||||
|
set debug_sync='innobase_connection_closed SIGNAL go2 WAIT_FOR go3';
|
||||||
|
disconnect foo;
|
||||||
|
|
||||||
|
connection default;
|
||||||
|
set debug_sync='now WAIT_FOR go0';
|
||||||
|
set debug_sync='found_killee SIGNAL go1 WAIT_FOR go2';
|
||||||
|
evalp kill $id;
|
||||||
|
set debug_sync='now SIGNAL go3';
|
||||||
|
drop table t1;
|
||||||
|
set debug_sync='reset';
|
@ -27,9 +27,9 @@ current_user()
|
|||||||
user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678@host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345
|
user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678@host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345
|
||||||
# check global privileges
|
# check global privileges
|
||||||
select * from mariadbtestdb.t1;
|
select * from mariadbtestdb.t1;
|
||||||
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table 't1'
|
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table `mariadbtestdb`.`t1`
|
||||||
select * from mariadbtestdb2.t2;
|
select * from mariadbtestdb2.t2;
|
||||||
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table 't2'
|
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table `mariadbtestdb2`.`t2`
|
||||||
connection default;
|
connection default;
|
||||||
grant SELECT ON *.* TO user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678@host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345;
|
grant SELECT ON *.* TO user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678@host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345;
|
||||||
disconnect con1;
|
disconnect con1;
|
||||||
@ -46,9 +46,9 @@ disconnect con1;
|
|||||||
connect con1,"127.0.0.1","user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678",,test,$MASTER_MYPORT,;
|
connect con1,"127.0.0.1","user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678",,test,$MASTER_MYPORT,;
|
||||||
connection con1;
|
connection con1;
|
||||||
select * from mariadbtestdb.t1;
|
select * from mariadbtestdb.t1;
|
||||||
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table 't1'
|
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table `mariadbtestdb`.`t1`
|
||||||
select * from mariadbtestdb2.t2;
|
select * from mariadbtestdb2.t2;
|
||||||
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table 't2'
|
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table `mariadbtestdb2`.`t2`
|
||||||
# check data base privileges
|
# check data base privileges
|
||||||
connection default;
|
connection default;
|
||||||
grant SELECT ON mariadbtestdb.* TO user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678@host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345;
|
grant SELECT ON mariadbtestdb.* TO user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678@host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345;
|
||||||
@ -58,7 +58,7 @@ connection con1;
|
|||||||
select * from mariadbtestdb.t1;
|
select * from mariadbtestdb.t1;
|
||||||
a b
|
a b
|
||||||
select * from mariadbtestdb2.t2;
|
select * from mariadbtestdb2.t2;
|
||||||
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table 't2'
|
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table `mariadbtestdb2`.`t2`
|
||||||
select * from mariadbtestdb.t3;
|
select * from mariadbtestdb.t3;
|
||||||
a
|
a
|
||||||
# check table privileges
|
# check table privileges
|
||||||
@ -71,9 +71,9 @@ connection con1;
|
|||||||
select * from mariadbtestdb.t1;
|
select * from mariadbtestdb.t1;
|
||||||
a b
|
a b
|
||||||
select * from mariadbtestdb2.t2;
|
select * from mariadbtestdb2.t2;
|
||||||
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table 't2'
|
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table `mariadbtestdb2`.`t2`
|
||||||
select * from mariadbtestdb.t3;
|
select * from mariadbtestdb.t3;
|
||||||
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table 't3'
|
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table `mariadbtestdb`.`t3`
|
||||||
# check column privileges
|
# check column privileges
|
||||||
connection default;
|
connection default;
|
||||||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678@host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345;
|
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678@host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345;
|
||||||
@ -82,11 +82,11 @@ disconnect con1;
|
|||||||
connect con1,"127.0.0.1","user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678",,test,$MASTER_MYPORT,;
|
connect con1,"127.0.0.1","user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678",,test,$MASTER_MYPORT,;
|
||||||
connection con1;
|
connection con1;
|
||||||
select * from mariadbtestdb.t1;
|
select * from mariadbtestdb.t1;
|
||||||
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table 't1'
|
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table `mariadbtestdb`.`t1`
|
||||||
select * from mariadbtestdb2.t2;
|
select * from mariadbtestdb2.t2;
|
||||||
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table 't2'
|
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table `mariadbtestdb2`.`t2`
|
||||||
select * from mariadbtestdb.t3;
|
select * from mariadbtestdb.t3;
|
||||||
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table 't3'
|
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table `mariadbtestdb`.`t3`
|
||||||
select a from mariadbtestdb.t1;
|
select a from mariadbtestdb.t1;
|
||||||
a
|
a
|
||||||
# check role
|
# check role
|
||||||
@ -101,13 +101,13 @@ disconnect con1;
|
|||||||
connect con1,"127.0.0.1","user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678",,test,$MASTER_MYPORT,;
|
connect con1,"127.0.0.1","user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678",,test,$MASTER_MYPORT,;
|
||||||
connection con1;
|
connection con1;
|
||||||
select * from mariadbtestdb.t1;
|
select * from mariadbtestdb.t1;
|
||||||
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table 't1'
|
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table `mariadbtestdb`.`t1`
|
||||||
select * from mariadbtestdb2.t2;
|
select * from mariadbtestdb2.t2;
|
||||||
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table 't2'
|
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table `mariadbtestdb2`.`t2`
|
||||||
select * from mariadbtestdb.t3;
|
select * from mariadbtestdb.t3;
|
||||||
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table 't3'
|
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table `mariadbtestdb`.`t3`
|
||||||
select a from mariadbtestdb.t1;
|
select a from mariadbtestdb.t1;
|
||||||
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table 't1'
|
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table `mariadbtestdb`.`t1`
|
||||||
SELECT CURRENT_ROLE;
|
SELECT CURRENT_ROLE;
|
||||||
CURRENT_ROLE
|
CURRENT_ROLE
|
||||||
NULL
|
NULL
|
||||||
@ -116,11 +116,11 @@ SELECT CURRENT_ROLE;
|
|||||||
CURRENT_ROLE
|
CURRENT_ROLE
|
||||||
role5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678
|
role5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678
|
||||||
select * from mariadbtestdb.t1;
|
select * from mariadbtestdb.t1;
|
||||||
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table 't1'
|
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table `mariadbtestdb`.`t1`
|
||||||
select * from mariadbtestdb2.t2;
|
select * from mariadbtestdb2.t2;
|
||||||
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table 't2'
|
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table `mariadbtestdb2`.`t2`
|
||||||
select * from mariadbtestdb.t3;
|
select * from mariadbtestdb.t3;
|
||||||
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table 't3'
|
ERROR 42000: SELECT command denied to user 'user5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678'@'host5678901_345678902_345678903_345678904_345678905_345678906_345678907_345678908_345678909_345678910_345678911_345678912_345678913_345678914_345678915_345678916_345678917_345678918_345678919_345678920_345678921_345678922_345678923_345678924_345678925_345' for table `mariadbtestdb`.`t3`
|
||||||
select a from mariadbtestdb.t1;
|
select a from mariadbtestdb.t1;
|
||||||
a
|
a
|
||||||
# check procedure
|
# check procedure
|
||||||
|
@ -27,7 +27,7 @@ CREATE TABLE t1(f1 INT);
|
|||||||
GRANT SELECT ON T1 to user_1@localhost;
|
GRANT SELECT ON T1 to user_1@localhost;
|
||||||
connect con1,localhost,user_1,,d1;
|
connect con1,localhost,user_1,,d1;
|
||||||
select * from t1;
|
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;
|
select * from T1;
|
||||||
f1
|
f1
|
||||||
connection default;
|
connection default;
|
||||||
|
4924
mysql-test/main/myisam_debug_keys.result
Normal file
4924
mysql-test/main/myisam_debug_keys.result
Normal file
File diff suppressed because it is too large
Load Diff
64
mysql-test/main/myisam_debug_keys.test
Normal file
64
mysql-test/main/myisam_debug_keys.test
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
--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='';
|
@ -8,7 +8,7 @@ CREATE TABLE time_zone_leap_second LIKE mysql.time_zone_leap_second;
|
|||||||
#
|
#
|
||||||
# Verbose run
|
# Verbose run
|
||||||
set @wsrep_is_on=(select coalesce(sum(SESSION_VALUE='ON'), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_on');
|
set @wsrep_is_on=(select coalesce(sum(SESSION_VALUE='ON'), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_on');
|
||||||
SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
|
SET STATEMENT SQL_MODE='' FOR SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
|
||||||
set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select coalesce(sum(GLOBAL_VALUE NOT LIKE @replicate_opt), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_mode');
|
set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select coalesce(sum(GLOBAL_VALUE NOT LIKE @replicate_opt), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_mode');
|
||||||
execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone'", 'do 0');
|
execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone'", 'do 0');
|
||||||
execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone ENGINE=InnoDB', 'do 0');
|
execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone ENGINE=InnoDB', 'do 0');
|
||||||
@ -57,7 +57,7 @@ execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_t
|
|||||||
#
|
#
|
||||||
# Run on zoneinfo directory
|
# Run on zoneinfo directory
|
||||||
set @wsrep_is_on=(select coalesce(sum(SESSION_VALUE='ON'), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_on');
|
set @wsrep_is_on=(select coalesce(sum(SESSION_VALUE='ON'), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_on');
|
||||||
SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
|
SET STATEMENT SQL_MODE='' FOR SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
|
||||||
set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select coalesce(sum(GLOBAL_VALUE NOT LIKE @replicate_opt), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_mode');
|
set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select coalesce(sum(GLOBAL_VALUE NOT LIKE @replicate_opt), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_mode');
|
||||||
execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone'", 'do 0');
|
execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone'", 'do 0');
|
||||||
execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone ENGINE=InnoDB', 'do 0');
|
execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone ENGINE=InnoDB', 'do 0');
|
||||||
@ -117,7 +117,7 @@ COUNT(*)
|
|||||||
# Run on zoneinfo directory --skip-write-binlog
|
# Run on zoneinfo directory --skip-write-binlog
|
||||||
#
|
#
|
||||||
set @wsrep_is_on=(select coalesce(sum(SESSION_VALUE='ON'), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_on');
|
set @wsrep_is_on=(select coalesce(sum(SESSION_VALUE='ON'), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_on');
|
||||||
SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
|
SET STATEMENT SQL_MODE='' FOR SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
|
||||||
set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select coalesce(sum(GLOBAL_VALUE NOT LIKE @replicate_opt), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_mode');
|
set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select coalesce(sum(GLOBAL_VALUE NOT LIKE @replicate_opt), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_mode');
|
||||||
execute immediate if(@wsrep_is_on, 'SET @save_wsrep_on=@@WSREP_ON, WSREP_ON=OFF', 'do 0');
|
execute immediate if(@wsrep_is_on, 'SET @save_wsrep_on=@@WSREP_ON, WSREP_ON=OFF', 'do 0');
|
||||||
SET @save_sql_log_bin=@@SQL_LOG_BIN;
|
SET @save_sql_log_bin=@@SQL_LOG_BIN;
|
||||||
@ -189,7 +189,7 @@ TRUNCATE TABLE time_zone_leap_second;
|
|||||||
# Testing with explicit timezonefile
|
# Testing with explicit timezonefile
|
||||||
#
|
#
|
||||||
set @wsrep_is_on=(select coalesce(sum(SESSION_VALUE='ON'), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_on');
|
set @wsrep_is_on=(select coalesce(sum(SESSION_VALUE='ON'), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_on');
|
||||||
SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
|
SET STATEMENT SQL_MODE='' FOR SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
|
||||||
set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select coalesce(sum(GLOBAL_VALUE NOT LIKE @replicate_opt), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_mode');
|
set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select coalesce(sum(GLOBAL_VALUE NOT LIKE @replicate_opt), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_mode');
|
||||||
execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone'", 'do 0');
|
execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone'", 'do 0');
|
||||||
execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone ENGINE=InnoDB', 'do 0');
|
execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone ENGINE=InnoDB', 'do 0');
|
||||||
@ -253,7 +253,7 @@ TRUNCATE TABLE time_zone_leap_second;
|
|||||||
# Testing with explicit timezonefile --skip-write-binlog
|
# Testing with explicit timezonefile --skip-write-binlog
|
||||||
#
|
#
|
||||||
set @wsrep_is_on=(select coalesce(sum(SESSION_VALUE='ON'), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_on');
|
set @wsrep_is_on=(select coalesce(sum(SESSION_VALUE='ON'), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_on');
|
||||||
SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
|
SET STATEMENT SQL_MODE='' FOR SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
|
||||||
set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select coalesce(sum(GLOBAL_VALUE NOT LIKE @replicate_opt), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_mode');
|
set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select coalesce(sum(GLOBAL_VALUE NOT LIKE @replicate_opt), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_mode');
|
||||||
execute immediate if(@wsrep_is_on, 'SET @save_wsrep_on=@@WSREP_ON, WSREP_ON=OFF', 'do 0');
|
execute immediate if(@wsrep_is_on, 'SET @save_wsrep_on=@@WSREP_ON, WSREP_ON=OFF', 'do 0');
|
||||||
SET @save_sql_log_bin=@@SQL_LOG_BIN;
|
SET @save_sql_log_bin=@@SQL_LOG_BIN;
|
||||||
@ -311,7 +311,7 @@ TRUNCATE TABLE time_zone_leap_second;
|
|||||||
# Testing --leap
|
# Testing --leap
|
||||||
#
|
#
|
||||||
set @wsrep_is_on=(select coalesce(sum(SESSION_VALUE='ON'), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_on');
|
set @wsrep_is_on=(select coalesce(sum(SESSION_VALUE='ON'), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_on');
|
||||||
SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
|
SET STATEMENT SQL_MODE='' FOR SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
|
||||||
set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select coalesce(sum(GLOBAL_VALUE NOT LIKE @replicate_opt), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_mode');
|
set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select coalesce(sum(GLOBAL_VALUE NOT LIKE @replicate_opt), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_mode');
|
||||||
execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone'", 'do 0');
|
execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone'", 'do 0');
|
||||||
execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone ENGINE=InnoDB', 'do 0');
|
execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone ENGINE=InnoDB', 'do 0');
|
||||||
@ -374,7 +374,7 @@ TRUNCATE TABLE time_zone_leap_second;
|
|||||||
# Testing --skip-write-binlog --leap
|
# Testing --skip-write-binlog --leap
|
||||||
#
|
#
|
||||||
set @wsrep_is_on=(select coalesce(sum(SESSION_VALUE='ON'), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_on');
|
set @wsrep_is_on=(select coalesce(sum(SESSION_VALUE='ON'), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_on');
|
||||||
SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
|
SET STATEMENT SQL_MODE='' FOR SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
|
||||||
set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select coalesce(sum(GLOBAL_VALUE NOT LIKE @replicate_opt), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_mode');
|
set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select coalesce(sum(GLOBAL_VALUE NOT LIKE @replicate_opt), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_mode');
|
||||||
execute immediate if(@wsrep_is_on, 'SET @save_wsrep_on=@@WSREP_ON, WSREP_ON=OFF', 'do 0');
|
execute immediate if(@wsrep_is_on, 'SET @save_wsrep_on=@@WSREP_ON, WSREP_ON=OFF', 'do 0');
|
||||||
SET @save_sql_log_bin=@@SQL_LOG_BIN;
|
SET @save_sql_log_bin=@@SQL_LOG_BIN;
|
||||||
@ -426,7 +426,7 @@ COM_TRUNCATE 1
|
|||||||
# Testing --skip-write-binlog
|
# Testing --skip-write-binlog
|
||||||
#
|
#
|
||||||
set @wsrep_is_on=(select coalesce(sum(SESSION_VALUE='ON'), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_on');
|
set @wsrep_is_on=(select coalesce(sum(SESSION_VALUE='ON'), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_on');
|
||||||
SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
|
SET STATEMENT SQL_MODE='' FOR SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
|
||||||
set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select coalesce(sum(GLOBAL_VALUE NOT LIKE @replicate_opt), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_mode');
|
set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select coalesce(sum(GLOBAL_VALUE NOT LIKE @replicate_opt), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_mode');
|
||||||
execute immediate if(@wsrep_is_on, 'SET @save_wsrep_on=@@WSREP_ON, WSREP_ON=OFF', 'do 0');
|
execute immediate if(@wsrep_is_on, 'SET @save_wsrep_on=@@WSREP_ON, WSREP_ON=OFF', 'do 0');
|
||||||
SET @save_sql_log_bin=@@SQL_LOG_BIN;
|
SET @save_sql_log_bin=@@SQL_LOG_BIN;
|
||||||
@ -448,7 +448,7 @@ COMMIT;
|
|||||||
SET SESSION SQL_LOG_BIN=@save_sql_log_bin;
|
SET SESSION SQL_LOG_BIN=@save_sql_log_bin;
|
||||||
execute immediate if(@wsrep_is_on, 'SET SESSION WSREP_ON=@save_wsrep_on', 'do 0');
|
execute immediate if(@wsrep_is_on, 'SET SESSION WSREP_ON=@save_wsrep_on', 'do 0');
|
||||||
set @wsrep_is_on=(select coalesce(sum(SESSION_VALUE='ON'), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_on');
|
set @wsrep_is_on=(select coalesce(sum(SESSION_VALUE='ON'), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_on');
|
||||||
SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
|
SET STATEMENT SQL_MODE='' FOR SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
|
||||||
set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select coalesce(sum(GLOBAL_VALUE NOT LIKE @replicate_opt), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_mode');
|
set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select coalesce(sum(GLOBAL_VALUE NOT LIKE @replicate_opt), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_mode');
|
||||||
execute immediate if(@wsrep_is_on, 'SET @save_wsrep_on=@@WSREP_ON, WSREP_ON=OFF', 'do 0');
|
execute immediate if(@wsrep_is_on, 'SET @save_wsrep_on=@@WSREP_ON, WSREP_ON=OFF', 'do 0');
|
||||||
SET @save_sql_log_bin=@@SQL_LOG_BIN;
|
SET @save_sql_log_bin=@@SQL_LOG_BIN;
|
||||||
@ -469,10 +469,33 @@ execute immediate if(@wsrep_is_on, 'SET SESSION WSREP_ON=@save_wsrep_on', 'do 0'
|
|||||||
# End of 10.2 tests
|
# End of 10.2 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
# MDEV-29347 MariaDB 10.6.8 fails to start when ONLY_FULL_GROUP_BY gets provided
|
||||||
|
#
|
||||||
|
set sql_mode=only_full_group_by;
|
||||||
|
SELECT COUNT(*) FROM time_zone;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
SELECT COUNT(*) FROM time_zone_name;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
SELECT COUNT(*) FROM time_zone_transition;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
SELECT COUNT(*) FROM time_zone_transition_type;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
SELECT COUNT(*) FROM time_zone_leap_second;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
select @@sql_mode;
|
||||||
|
@@sql_mode
|
||||||
|
ONLY_FULL_GROUP_BY
|
||||||
|
set sql_mode=default;
|
||||||
|
#
|
||||||
# MDEV-6236 - [PATCH] mysql_tzinfo_to_sql may produce invalid SQL
|
# MDEV-6236 - [PATCH] mysql_tzinfo_to_sql may produce invalid SQL
|
||||||
#
|
#
|
||||||
set @wsrep_is_on=(select coalesce(sum(SESSION_VALUE='ON'), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_on');
|
set @wsrep_is_on=(select coalesce(sum(SESSION_VALUE='ON'), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_on');
|
||||||
SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
|
SET STATEMENT SQL_MODE='' FOR SELECT concat('%', GROUP_CONCAT(OPTION), '%') INTO @replicate_opt FROM (SELECT DISTINCT concat('REPLICATE_', UPPER(ENGINE)) AS OPTION FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('time_zone', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'time_zone_leap_second') AND ENGINE in ('MyISAM', 'Aria')) AS o ORDER BY OPTION DESC;
|
||||||
set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select coalesce(sum(GLOBAL_VALUE NOT LIKE @replicate_opt), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_mode');
|
set @wsrep_cannot_replicate_tz=@wsrep_is_on AND (select coalesce(sum(GLOBAL_VALUE NOT LIKE @replicate_opt), 0) from information_schema.SYSTEM_VARIABLES WHERE VARIABLE_NAME='wsrep_mode');
|
||||||
execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone'", 'do 0');
|
execute immediate if(@wsrep_cannot_replicate_tz, "select ENGINE into @time_zone_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME='time_zone'", 'do 0');
|
||||||
execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone ENGINE=InnoDB', 'do 0');
|
execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone ENGINE=InnoDB', 'do 0');
|
||||||
|
@ -214,6 +214,23 @@ SELECT g.VARIABLE_NAME, g.VARIABLE_VALUE - b.VARIABLE_VALUE AS diff
|
|||||||
--echo # End of 10.2 tests
|
--echo # End of 10.2 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-29347 MariaDB 10.6.8 fails to start when ONLY_FULL_GROUP_BY gets provided
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--exec $MYSQL_TZINFO_TO_SQL $MYSQLTEST_VARDIR/zoneinfo > $MYSQL_TMP_DIR/tz.sql
|
||||||
|
set sql_mode=only_full_group_by;
|
||||||
|
--disable_query_log
|
||||||
|
--source $MYSQL_TMP_DIR/tz.sql
|
||||||
|
--enable_query_log
|
||||||
|
SELECT COUNT(*) FROM time_zone;
|
||||||
|
SELECT COUNT(*) FROM time_zone_name;
|
||||||
|
SELECT COUNT(*) FROM time_zone_transition;
|
||||||
|
SELECT COUNT(*) FROM time_zone_transition_type;
|
||||||
|
SELECT COUNT(*) FROM time_zone_leap_second;
|
||||||
|
select @@sql_mode;
|
||||||
|
set sql_mode=default;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # MDEV-6236 - [PATCH] mysql_tzinfo_to_sql may produce invalid SQL
|
--echo # MDEV-6236 - [PATCH] mysql_tzinfo_to_sql may produce invalid SQL
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -1901,18 +1901,18 @@ FLUSH PRIVILEGES;
|
|||||||
#
|
#
|
||||||
This installation of MariaDB is already upgraded to MariaDB .
|
This installation of MariaDB is already upgraded to MariaDB .
|
||||||
There is no need to run mysql_upgrade again for MariaDB .
|
There is no need to run mysql_upgrade again for MariaDB .
|
||||||
Looking for 'mysql' as: mysql
|
Looking for 'mariadb' as: mariadb
|
||||||
This installation of MariaDB is already upgraded to MariaDB .
|
This installation of MariaDB is already upgraded to MariaDB .
|
||||||
There is no need to run mysql_upgrade again for MariaDB .
|
There is no need to run mysql_upgrade again for MariaDB .
|
||||||
#
|
#
|
||||||
# MDEV-27279: mariadb_upgrade check-if-upgrade absence is do it
|
# MDEV-27279: mariadb_upgrade check-if-upgrade absence is do it
|
||||||
#
|
#
|
||||||
Looking for 'mysql' as: mysql
|
Looking for 'mariadb' as: mariadb
|
||||||
Empty or non existent ...mysql_upgrade_info. Assuming mysql_upgrade has to be run!
|
Empty or non existent ...mysql_upgrade_info. Assuming mysql_upgrade has to be run!
|
||||||
#
|
#
|
||||||
# MDEV-27279: mariadb_upgrade check-if-upgrade with minor version change
|
# MDEV-27279: mariadb_upgrade check-if-upgrade with minor version change
|
||||||
#
|
#
|
||||||
Looking for 'mysql' as: mysql
|
Looking for 'mariadb' as: mariadb
|
||||||
This installation of MariaDB is already upgraded to MariaDB .
|
This installation of MariaDB is already upgraded to MariaDB .
|
||||||
There is no need to run mysql_upgrade again for MariaDB .
|
There is no need to run mysql_upgrade again for MariaDB .
|
||||||
This installation of MariaDB is already upgraded to MariaDB .
|
This installation of MariaDB is already upgraded to MariaDB .
|
||||||
|
@ -56,7 +56,7 @@ DROP USER mysqltest1@'%';
|
|||||||
|
|
||||||
--echo Run mysql_upgrade with a non existing server socket
|
--echo Run mysql_upgrade with a non existing server socket
|
||||||
--replace_result $MYSQLTEST_VARDIR var
|
--replace_result $MYSQLTEST_VARDIR var
|
||||||
--replace_regex /.*mysqlcheck.*: Got/mysqlcheck: Got/ /\([0-9|-]*\)/(errno)/
|
--replace_regex /.*mariadb-check.*: Got/mariadb-check: Got/ /\([0-9|-]*\)/(errno)/
|
||||||
--error 1
|
--error 1
|
||||||
# NC: Added --skip-version-check, as the version check would fail when
|
# NC: Added --skip-version-check, as the version check would fail when
|
||||||
# mysql_upgrade tries to get the server version.
|
# mysql_upgrade tries to get the server version.
|
||||||
@ -140,7 +140,7 @@ let $MYSQLD_DATADIR= `select @@datadir`;
|
|||||||
--echo Run mysql_upgrade with unauthorized access
|
--echo Run mysql_upgrade with unauthorized access
|
||||||
--error 1
|
--error 1
|
||||||
--exec $MYSQL_UPGRADE --skip-verbose --user=root --password=wrong_password 2>&1
|
--exec $MYSQL_UPGRADE --skip-verbose --user=root --password=wrong_password 2>&1
|
||||||
--replace_regex /.*mysqlcheck.*: Got/mysqlcheck: Got/ /\([0-9|-]*\)/(errno)/
|
--replace_regex /.*mariadb-check.*: Got/mariadb-check: Got/ /\([0-9|-]*\)/(errno)/
|
||||||
--error 1
|
--error 1
|
||||||
--exec $MYSQL_UPGRADE --skip-verbose --skip-version-check --user=root --password=wrong_password 2>&1
|
--exec $MYSQL_UPGRADE --skip-verbose --skip-version-check --user=root --password=wrong_password 2>&1
|
||||||
|
|
||||||
@ -291,7 +291,7 @@ FLUSH PRIVILEGES;
|
|||||||
--replace_regex /\d\d\.\d*\.\d*[^ .\n]*/MariaDB /
|
--replace_regex /\d\d\.\d*\.\d*[^ .\n]*/MariaDB /
|
||||||
--error 1
|
--error 1
|
||||||
--exec $MYSQL_UPGRADE --check-if-upgrade-is-needed
|
--exec $MYSQL_UPGRADE --check-if-upgrade-is-needed
|
||||||
--replace_regex /\d\d\.\d*\.\d*[^ .\n]*/MariaDB / /'mysql.* as:[^\n]*/'mysql' as: mysql/
|
--replace_regex /\d\d\.\d*\.\d*[^ .\n]*/MariaDB / /'mariadb.* as:[^\n]*/'mariadb' as: mariadb/
|
||||||
--error 1
|
--error 1
|
||||||
--exec $MYSQL_UPGRADE --check-if-upgrade-is-needed --verbose
|
--exec $MYSQL_UPGRADE --check-if-upgrade-is-needed --verbose
|
||||||
|
|
||||||
@ -303,7 +303,7 @@ FLUSH PRIVILEGES;
|
|||||||
--replace_regex /[^ ]*mysql_upgrade_info/...mysql_upgrade_info/
|
--replace_regex /[^ ]*mysql_upgrade_info/...mysql_upgrade_info/
|
||||||
--exec $MYSQL_UPGRADE --check-if-upgrade-is-needed
|
--exec $MYSQL_UPGRADE --check-if-upgrade-is-needed
|
||||||
|
|
||||||
--replace_regex /'mysql.* as:[^\n]*/'mysql' as: mysql/ /open .* Assuming/open XXX. Assuming/ /[^ ]*mysql_upgrade_info/...mysql_upgrade_info/
|
--replace_regex /'mariadb.* as:[^\n]*/'mariadb' as: mariadb/ /open .* Assuming/open XXX. Assuming/ /[^ ]*mysql_upgrade_info/...mysql_upgrade_info/
|
||||||
--exec $MYSQL_UPGRADE --check-if-upgrade-is-needed --verbose
|
--exec $MYSQL_UPGRADE --check-if-upgrade-is-needed --verbose
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
@ -325,7 +325,7 @@ EOF
|
|||||||
|
|
||||||
--error 1
|
--error 1
|
||||||
--exec $MYSQL_UPGRADE --check-if-upgrade-is-needed --silent
|
--exec $MYSQL_UPGRADE --check-if-upgrade-is-needed --silent
|
||||||
--replace_regex /\d\d\.\d*\.\d*[^ .\n]*/MariaDB / /'mysql.* as:[^\n]*/'mysql' as: mysql/
|
--replace_regex /\d\d\.\d*\.\d*[^ .\n]*/MariaDB / /'mariadb.* as:[^\n]*/'mariadb' as: mariadb/
|
||||||
--error 1
|
--error 1
|
||||||
--exec $MYSQL_UPGRADE --check-if-upgrade-is-needed --verbose
|
--exec $MYSQL_UPGRADE --check-if-upgrade-is-needed --verbose
|
||||||
--replace_regex /\d\d\.\d*\.\d*[^ .\n]*/MariaDB /
|
--replace_regex /\d\d\.\d*\.\d*[^ .\n]*/MariaDB /
|
||||||
@ -352,7 +352,7 @@ EOF
|
|||||||
--exec $MYSQL_UPGRADE --check-if-upgrade-is-needed --silent
|
--exec $MYSQL_UPGRADE --check-if-upgrade-is-needed --silent
|
||||||
--replace_regex /\d\d\.\d*\.\d*[^ .\n]*/MariaDB /
|
--replace_regex /\d\d\.\d*\.\d*[^ .\n]*/MariaDB /
|
||||||
--exec $MYSQL_UPGRADE --check-if-upgrade-is-needed
|
--exec $MYSQL_UPGRADE --check-if-upgrade-is-needed
|
||||||
--replace_regex /\d\d\.\d*\.\d*[^ .\n]*/MariaDB / /'mysql.* as:[^\n]*/'mysql' as: mysql/
|
--replace_regex /\d\d\.\d*\.\d*[^ .\n]*/MariaDB / /'mariadb.* as:[^\n]*/'mysql' as: mysql/
|
||||||
--exec $MYSQL_UPGRADE --check-if-upgrade-is-needed --verbose
|
--exec $MYSQL_UPGRADE --check-if-upgrade-is-needed --verbose
|
||||||
--remove_file $MYSQLD_DATADIR/mysql_upgrade_info
|
--remove_file $MYSQLD_DATADIR/mysql_upgrade_info
|
||||||
drop table mysql.global_priv;
|
drop table mysql.global_priv;
|
||||||
|
@ -666,7 +666,7 @@ connect unsecure,localhost,untrusted,,mysqltest1;
|
|||||||
mysql mysqltest1 -uuntrusted < var/tmp/bug31611.sql
|
mysql mysqltest1 -uuntrusted < var/tmp/bug31611.sql
|
||||||
connection unsecure;
|
connection unsecure;
|
||||||
INSERT INTO t1 VALUES (1,USER());
|
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;
|
SELECT * FROM t1;
|
||||||
a b
|
a b
|
||||||
1 root@localhost
|
1 root@localhost
|
||||||
|
@ -1929,6 +1929,7 @@ drop table `t1`;
|
|||||||
create table t1(a int);
|
create table t1(a int);
|
||||||
create table t2(a int);
|
create table t2(a int);
|
||||||
create table t3(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_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||||
@ -3549,6 +3550,8 @@ create table t1 ( id serial );
|
|||||||
create view v1 as select * from t1;
|
create view v1 as select * from t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
mysqldump {
|
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`
|
-- failed on view `v1`: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `test`.`t1`.`id` AS `id` from `t1`
|
||||||
|
|
||||||
@ -3846,6 +3849,9 @@ DROP TABLE t1;
|
|||||||
CREATE TABLE t1(a int);
|
CREATE TABLE t1(a int);
|
||||||
INSERT INTO t1 VALUES (1), (2);
|
INSERT INTO t1 VALUES (1), (2);
|
||||||
mysqldump: Input filename too long: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
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;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t2 (a INT) ENGINE=MyISAM;
|
CREATE TABLE t2 (a INT) ENGINE=MyISAM;
|
||||||
CREATE TABLE t3 (a INT) ENGINE=MyISAM;
|
CREATE TABLE t3 (a INT) ENGINE=MyISAM;
|
||||||
@ -3939,6 +3945,7 @@ grant all privileges on mysqldump_test_db.* to user2;
|
|||||||
connect user27293,localhost,user1,,mysqldump_test_db,$MASTER_MYPORT,$MASTER_MYSOCK;
|
connect user27293,localhost,user1,,mysqldump_test_db,$MASTER_MYPORT,$MASTER_MYSOCK;
|
||||||
connection user27293;
|
connection user27293;
|
||||||
create procedure mysqldump_test_db.sp1() select 'hello';
|
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`
|
-- insufficient privileges to SHOW CREATE PROCEDURE `sp1`
|
||||||
-- does user2 have permissions on mysql.proc?
|
-- does user2 have permissions on mysql.proc?
|
||||||
@ -4171,6 +4178,7 @@ UNLOCK TABLES;
|
|||||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
/*!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 @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||||
@ -4398,6 +4406,7 @@ Abernathy
|
|||||||
aberrant
|
aberrant
|
||||||
aberration
|
aberration
|
||||||
drop table words;
|
drop table words;
|
||||||
|
mysqlimport: Error: 1146, Table 'test.words' doesn't exist, when using table: words
|
||||||
drop table t1;
|
drop table t1;
|
||||||
drop table t2;
|
drop table t2;
|
||||||
drop table words2;
|
drop table words2;
|
||||||
@ -4722,6 +4731,8 @@ CREATE TABLE t1 (a INT, b CHAR(10) CHARSET koi8r, c CHAR(10) CHARSET latin1);
|
|||||||
CREATE TABLE t2 LIKE t1;
|
CREATE TABLE t2 LIKE t1;
|
||||||
INSERT INTO t1 VALUES (1, 'ABC-АБВ', 'DEF-ÂÃÄ'), (2, NULL, NULL);
|
INSERT INTO t1 VALUES (1, 'ABC-АБВ', 'DEF-ÂÃÄ'), (2, NULL, NULL);
|
||||||
# error on multi-character ENCLOSED/ESCAPED BY
|
# 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):
|
# default '--default-charset' (binary):
|
||||||
##################################################
|
##################################################
|
||||||
1 ABC-<2D><><EFBFBD> DEF-<2D><><EFBFBD>
|
1 ABC-<2D><><EFBFBD> DEF-<2D><><EFBFBD>
|
||||||
@ -5208,6 +5219,7 @@ connection conn_1;
|
|||||||
<field name="c1">3</field>
|
<field name="c1">3</field>
|
||||||
</row>
|
</row>
|
||||||
</table_data>
|
</table_data>
|
||||||
|
mysqldump: user1 has insufficient privileges to SHOW CREATE FUNCTION `hello1`!
|
||||||
<triggers name="t2">
|
<triggers name="t2">
|
||||||
<trigger Trigger="trig1" sql_mode="" character_set_client="latin1" collation_connection="latin1_swedish_ci" Database_Collation="latin1_swedish_ci" Created="--TIME--">
|
<trigger Trigger="trig1" sql_mode="" character_set_client="latin1" collation_connection="latin1_swedish_ci" Database_Collation="latin1_swedish_ci" Created="--TIME--">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
@ -5511,6 +5523,8 @@ ROUTINE_NAME
|
|||||||
proc
|
proc
|
||||||
one
|
one
|
||||||
DROP DATABASE bug25717383;
|
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]
|
Usage: mysqldump [OPTIONS] database [tables]
|
||||||
OR mysqldump [OPTIONS] --databases DB1 [DB2 DB3...]
|
OR mysqldump [OPTIONS] --databases DB1 [DB2 DB3...]
|
||||||
OR mysqldump [OPTIONS] --all-databases
|
OR mysqldump [OPTIONS] --all-databases
|
||||||
@ -5758,6 +5772,7 @@ t1_id int,
|
|||||||
CONSTRAINT fk
|
CONSTRAINT fk
|
||||||
FOREIGN KEY (t1_id) REFERENCES t1 (id)
|
FOREIGN KEY (t1_id) REFERENCES t1 (id)
|
||||||
) ENGINE = InnoDB;
|
) 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;
|
select count(*) from t2;
|
||||||
count(*)
|
count(*)
|
||||||
1
|
1
|
||||||
@ -6448,6 +6463,7 @@ j integer
|
|||||||
INSERT INTO t VALUES (1,1),(2,2),(3,3),(4,4);
|
INSERT INTO t VALUES (1,1),(2,2),(3,3),(4,4);
|
||||||
# Dump database 1
|
# Dump database 1
|
||||||
# Restore from database 1 to database 2
|
# 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)
|
SETVAL(`seq_t_i`, 1, 0)
|
||||||
1
|
1
|
||||||
DROP DATABASE IF EXISTS test1;
|
DROP DATABASE IF EXISTS test1;
|
||||||
|
@ -739,7 +739,7 @@ create table t2(a int);
|
|||||||
create table t3(a int);
|
create table t3(a int);
|
||||||
--replace_result mysqldump.exe mysqldump
|
--replace_result mysqldump.exe mysqldump
|
||||||
--error 6
|
--error 6
|
||||||
--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --force --no-data test t3 t1 non_existing t2
|
--exec $MYSQL_DUMP --default-character-set=utf8mb4 --skip-comments --force --no-data test t3 t1 non_existing t2 2>&1
|
||||||
drop table t1, t2, t3;
|
drop table t1, t2, t3;
|
||||||
|
|
||||||
|
|
||||||
@ -1290,7 +1290,7 @@ drop table t1;
|
|||||||
--echo mysqldump {
|
--echo mysqldump {
|
||||||
--replace_result mysqldump.exe mysqldump
|
--replace_result mysqldump.exe mysqldump
|
||||||
--error 2
|
--error 2
|
||||||
--exec $MYSQL_DUMP --default-character-set=utf8mb4 --force -N --compact --skip-comments test
|
--exec $MYSQL_DUMP --default-character-set=utf8mb4 --force -N --compact --skip-comments test 2>&1
|
||||||
--echo } mysqldump
|
--echo } mysqldump
|
||||||
drop view v1;
|
drop view v1;
|
||||||
|
|
||||||
@ -1528,13 +1528,13 @@ INSERT INTO t1 VALUES (1), (2);
|
|||||||
--exec $MYSQL_DUMP --default-character-set=utf8mb4 --tab=$MYSQLTEST_VARDIR/tmp/ --fields-terminated-by=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test
|
--exec $MYSQL_DUMP --default-character-set=utf8mb4 --tab=$MYSQLTEST_VARDIR/tmp/ --fields-terminated-by=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test
|
||||||
--replace_result mysqldump.exe mysqldump
|
--replace_result mysqldump.exe mysqldump
|
||||||
--error 2
|
--error 2
|
||||||
--exec $MYSQL_DUMP --default-character-set=utf8mb4 --tab=$MYSQLTEST_VARDIR/tmp/ --fields-enclosed-by=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test
|
--exec $MYSQL_DUMP --default-character-set=utf8mb4 --tab=$MYSQLTEST_VARDIR/tmp/ --fields-enclosed-by=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test 2>&1
|
||||||
--replace_result mysqldump.exe mysqldump
|
--replace_result mysqldump.exe mysqldump
|
||||||
--error 2
|
--error 2
|
||||||
--exec $MYSQL_DUMP --default-character-set=utf8mb4 --tab=$MYSQLTEST_VARDIR/tmp/ --fields-optionally-enclosed-by=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test
|
--exec $MYSQL_DUMP --default-character-set=utf8mb4 --tab=$MYSQLTEST_VARDIR/tmp/ --fields-optionally-enclosed-by=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test 2>&1
|
||||||
--replace_result mysqldump.exe mysqldump
|
--replace_result mysqldump.exe mysqldump
|
||||||
--error 2
|
--error 2
|
||||||
--exec $MYSQL_DUMP --default-character-set=utf8mb4 --tab=$MYSQLTEST_VARDIR/tmp/ --fields-escaped-by=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test
|
--exec $MYSQL_DUMP --default-character-set=utf8mb4 --tab=$MYSQLTEST_VARDIR/tmp/ --fields-escaped-by=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test 2>&1
|
||||||
--exec $MYSQL_DUMP --default-character-set=utf8mb4 --tab=$MYSQLTEST_VARDIR/tmp/ --lines-terminated-by=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test
|
--exec $MYSQL_DUMP --default-character-set=utf8mb4 --tab=$MYSQLTEST_VARDIR/tmp/ --lines-terminated-by=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa test
|
||||||
|
|
||||||
--remove_file $MYSQLTEST_VARDIR/tmp/t1.sql
|
--remove_file $MYSQLTEST_VARDIR/tmp/t1.sql
|
||||||
@ -1608,7 +1608,7 @@ create procedure mysqldump_test_db.sp1() select 'hello';
|
|||||||
|
|
||||||
--replace_result mysqldump.exe mysqldump
|
--replace_result mysqldump.exe mysqldump
|
||||||
--error 2
|
--error 2
|
||||||
--exec $MYSQL_DUMP -f --compact --user=user2 --password= -h 127.0.0.1 -P $MASTER_MYPORT --routines mysqldump_test_db
|
--exec $MYSQL_DUMP -f --compact --user=user2 --password= -h 127.0.0.1 -P $MASTER_MYPORT --routines mysqldump_test_db 2>&1
|
||||||
|
|
||||||
--exec $MYSQL_DUMP -f --compact --user=user1 --password= -h 127.0.0.1 -P $MASTER_MYPORT --routines mysqldump_test_db
|
--exec $MYSQL_DUMP -f --compact --user=user1 --password= -h 127.0.0.1 -P $MASTER_MYPORT --routines mysqldump_test_db
|
||||||
|
|
||||||
@ -1714,7 +1714,7 @@ CREATE TABLE `כדשגכחךלדגכחשךדגחכךלדגכ` ( f1 INT );
|
|||||||
--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --skip-comments --default-character-set=utf8 --compatible=mysql323 test
|
--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --skip-comments --default-character-set=utf8 --compatible=mysql323 test
|
||||||
--replace_result mysqldump.exe mysqldump
|
--replace_result mysqldump.exe mysqldump
|
||||||
--error 2
|
--error 2
|
||||||
--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --skip-comments --default-character-set=latin1 --compatible=mysql323 test
|
--exec $MYSQL_DUMP --character-sets-dir=$MYSQL_SHAREDIR/charsets --skip-comments --default-character-set=latin1 --compatible=mysql323 test 2>&1
|
||||||
DROP TABLE `כדשגכחךלדגכחשךדגחכךלדגכ`;
|
DROP TABLE `כדשגכחךלדגכחשךדגחכךלדגכ`;
|
||||||
SET NAMES latin1;
|
SET NAMES latin1;
|
||||||
|
|
||||||
@ -1768,9 +1768,8 @@ select * from words2;
|
|||||||
# Drop table "words" and run with threads, should fail
|
# Drop table "words" and run with threads, should fail
|
||||||
drop table words;
|
drop table words;
|
||||||
--replace_regex /.*mysqlimport(\.exe)*/mysqlimport/
|
--replace_regex /.*mysqlimport(\.exe)*/mysqlimport/
|
||||||
--replace_result mysqldump.exe mysqldump
|
|
||||||
--error 1
|
--error 1
|
||||||
--exec $MYSQL_IMPORT --silent --use-threads=2 test $MYSQLTEST_VARDIR/tmp/t1.txt $MYSQLTEST_VARDIR/tmp/t2.txt $MYSQLTEST_VARDIR/std_data/words.dat $MYSQLTEST_VARDIR/std_data/words2.dat
|
--exec $MYSQL_IMPORT --silent --use-threads=2 test $MYSQLTEST_VARDIR/tmp/t1.txt $MYSQLTEST_VARDIR/tmp/t2.txt $MYSQLTEST_VARDIR/std_data/words.dat $MYSQLTEST_VARDIR/std_data/words2.dat 2>&1
|
||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
drop table t2;
|
drop table t2;
|
||||||
@ -2121,12 +2120,12 @@ INSERT INTO t1 VALUES (1, 'ABC-АБВ', 'DEF-ÂÃÄ'), (2, NULL, NULL);
|
|||||||
|
|
||||||
--replace_result mysqldump.exe mysqldump
|
--replace_result mysqldump.exe mysqldump
|
||||||
--error 2
|
--error 2
|
||||||
--exec $MYSQL_DUMP --disable-default-character-set --tab=$MYSQLTEST_VARDIR/tmp/ --fields-enclosed-by='12345' test t1
|
--exec $MYSQL_DUMP --disable-default-character-set --tab=$MYSQLTEST_VARDIR/tmp/ --fields-enclosed-by='12345' test t1 2>&1
|
||||||
--remove_file $file
|
--remove_file $file
|
||||||
|
|
||||||
--replace_result mysqldump.exe mysqldump
|
--replace_result mysqldump.exe mysqldump
|
||||||
--error 2
|
--error 2
|
||||||
--exec $MYSQL_DUMP --disable-default-character-set --tab=$MYSQLTEST_VARDIR/tmp/ --fields-escaped-by='12345' test t1
|
--exec $MYSQL_DUMP --disable-default-character-set --tab=$MYSQLTEST_VARDIR/tmp/ --fields-escaped-by='12345' test t1 2>&1
|
||||||
--remove_file $file
|
--remove_file $file
|
||||||
|
|
||||||
--echo # default '--default-charset' (binary):
|
--echo # default '--default-charset' (binary):
|
||||||
@ -2340,7 +2339,7 @@ connection conn_1;
|
|||||||
|
|
||||||
--replace_result mysqldump.exe mysqldump
|
--replace_result mysqldump.exe mysqldump
|
||||||
--error 2
|
--error 2
|
||||||
--exec $MYSQL_DUMP --user=user1 -R -E --triggers -X BUG52792
|
--exec $MYSQL_DUMP --user=user1 -R -E --triggers -X BUG52792 2>&1
|
||||||
|
|
||||||
connection default;
|
connection default;
|
||||||
disconnect conn_1;
|
disconnect conn_1;
|
||||||
@ -2548,16 +2547,17 @@ DROP DATABASE bug25717383;
|
|||||||
#
|
#
|
||||||
# MDEV-6091 mysqldump goes in a loop and segfaults if --dump-slave is specified and it cannot connect to the server
|
# MDEV-6091 mysqldump goes in a loop and segfaults if --dump-slave is specified and it cannot connect to the server
|
||||||
#
|
#
|
||||||
|
--replace_regex /mysqldump\.exe/mysqldump/ /'unknownhost' \(.*\)/'unknownhost'/
|
||||||
--error 2
|
--error 2
|
||||||
--exec $MYSQL_DUMP --default-character-set=utf8mb4 -hunknownhost --dump-slave nulldb
|
--exec $MYSQL_DUMP --default-character-set=utf8mb4 -hunknownhost --dump-slave nulldb 2>&1
|
||||||
|
|
||||||
#
|
#
|
||||||
# MDEV-6056 [PATCH] mysqldump writes usage to stdout even when not explicitly requested
|
# MDEV-6056 [PATCH] mysqldump writes usage to stdout even when not explicitly requested
|
||||||
#
|
#
|
||||||
--replace_result mysqldump.exe mysqldump
|
--replace_result mysqldump.exe mysqldump
|
||||||
--error 1
|
--error 1
|
||||||
--exec $MYSQL_DUMP --default-character-set=utf8mb4 --user=foo 2>&1 > $MYSQLTEST_VARDIR/tmp/bug6056.out
|
--exec $MYSQL_DUMP --default-character-set=utf8mb4 --user=foo 2>&1
|
||||||
--exec $MYSQL_DUMP --help > $MYSQLTEST_VARDIR/tmp/bug6056.out
|
--exec $MYSQL_DUMP --help 2>&1 > $MYSQLTEST_VARDIR/tmp/bug6056.out
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # MDEV-9001 - [PATCH] Fix DB name quoting in mysqldump --routine
|
--echo # MDEV-9001 - [PATCH] Fix DB name quoting in mysqldump --routine
|
||||||
@ -2677,8 +2677,9 @@ create table t2 (
|
|||||||
0
|
0
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
--replace_regex /.*mysqlimport(\.exe)*/mysqlimport/
|
||||||
--error 1
|
--error 1
|
||||||
--exec $MYSQL_IMPORT --silent test $MYSQLTEST_VARDIR/tmp/t2.txt
|
--exec $MYSQL_IMPORT --silent test $MYSQLTEST_VARDIR/tmp/t2.txt 2>&1
|
||||||
--exec $MYSQL_IMPORT --silent -k test $MYSQLTEST_VARDIR/tmp/t2.txt
|
--exec $MYSQL_IMPORT --silent -k test $MYSQLTEST_VARDIR/tmp/t2.txt
|
||||||
select count(*) from t2;
|
select count(*) from t2;
|
||||||
|
|
||||||
@ -2881,7 +2882,7 @@ INSERT INTO t VALUES (1,1),(2,2),(3,3),(4,4);
|
|||||||
--echo # Restore from database 1 to database 2
|
--echo # Restore from database 1 to database 2
|
||||||
|
|
||||||
--error 1
|
--error 1
|
||||||
--exec $MYSQL test2 < $MYSQLTEST_VARDIR/tmp/dumptest1.sql
|
--exec $MYSQL test2 < $MYSQLTEST_VARDIR/tmp/dumptest1.sql 2>&1
|
||||||
|
|
||||||
--remove_file $MYSQLTEST_VARDIR/tmp/dumptest1.sql
|
--remove_file $MYSQLTEST_VARDIR/tmp/dumptest1.sql
|
||||||
DROP DATABASE IF EXISTS test1;
|
DROP DATABASE IF EXISTS test1;
|
||||||
|
@ -22,7 +22,7 @@ select * from t1;
|
|||||||
f1
|
f1
|
||||||
5
|
5
|
||||||
delete from t1;
|
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;
|
connection con3;
|
||||||
SELECT VARIABLE_VALUE <> '' AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
|
SELECT VARIABLE_VALUE <> '' AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
|
||||||
have_ssl
|
have_ssl
|
||||||
@ -31,7 +31,7 @@ select * from t1;
|
|||||||
f1
|
f1
|
||||||
5
|
5
|
||||||
delete from t1;
|
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;
|
connection con4;
|
||||||
SELECT VARIABLE_VALUE <> '' AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
|
SELECT VARIABLE_VALUE <> '' AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
|
||||||
have_ssl
|
have_ssl
|
||||||
@ -40,7 +40,7 @@ select * from t1;
|
|||||||
f1
|
f1
|
||||||
5
|
5
|
||||||
delete from t1;
|
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;
|
connection default;
|
||||||
disconnect con1;
|
disconnect con1;
|
||||||
disconnect con3;
|
disconnect con3;
|
||||||
|
@ -13,7 +13,7 @@ return a+1;
|
|||||||
END|
|
END|
|
||||||
set optimizer_trace="enabled=on";
|
set optimizer_trace="enabled=on";
|
||||||
select * from db1.t1;
|
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;
|
select * from information_schema.OPTIMIZER_TRACE;
|
||||||
QUERY TRACE MISSING_BYTES_BEYOND_MAX_MEM_SIZE INSUFFICIENT_PRIVILEGES
|
QUERY TRACE MISSING_BYTES_BEYOND_MAX_MEM_SIZE INSUFFICIENT_PRIVILEGES
|
||||||
0 1
|
0 1
|
||||||
|
@ -1897,7 +1897,7 @@ ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
|
|||||||
SELECT * FROM t1 PARTITION (p0);
|
SELECT * FROM t1 PARTITION (p0);
|
||||||
i
|
i
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1, t2;
|
||||||
#
|
#
|
||||||
# MDEV-18371 Server crashes in ha_innobase::cmp_ref upon UPDATE with PARTITION clause.
|
# MDEV-18371 Server crashes in ha_innobase::cmp_ref upon UPDATE with PARTITION clause.
|
||||||
#
|
#
|
||||||
@ -1915,7 +1915,88 @@ a b
|
|||||||
4 3
|
4 3
|
||||||
8 2
|
8 2
|
||||||
2 6
|
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
|
# MDEV-18982: INSERT using explicit patition pruning with column list
|
||||||
#
|
#
|
||||||
@ -1925,3 +2006,6 @@ select * from t1;
|
|||||||
a
|
a
|
||||||
1
|
1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# End of 10.4 tests
|
||||||
|
#
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
--source include/have_innodb.inc
|
--source include/have_innodb.inc
|
||||||
--source include/have_partition.inc
|
--source include/have_partition.inc
|
||||||
|
--source include/have_sequence.inc
|
||||||
|
|
||||||
# Helper statement
|
# Helper statement
|
||||||
let $get_handler_status_counts= SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS
|
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;
|
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
|
||||||
SELECT * FROM t1 PARTITION (p0);
|
SELECT * FROM t1 PARTITION (p0);
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # MDEV-18371 Server crashes in ha_innobase::cmp_ref upon UPDATE with PARTITION clause.
|
--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;
|
FLUSH TABLES;
|
||||||
UPDATE t1 PARTITION (p3,p1) SET a = 2 WHERE a = 3;
|
UPDATE t1 PARTITION (p3,p1) SET a = 2 WHERE a = 3;
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-21134 Crash with partitioned table, PARTITION syntax, and index_merge.
|
||||||
|
--echo #
|
||||||
|
|
||||||
# Cleanup
|
create table t1 (
|
||||||
DROP TABLE t1, t2;
|
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;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of 10.3 tests
|
||||||
|
--echo #
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # MDEV-18982: INSERT using explicit patition pruning with column list
|
--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);
|
insert into t1 partition (p0) (a) values (1);
|
||||||
select * from t1;
|
select * from t1;
|
||||||
drop table 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`
|
GRANT SELECT, ALTER ON `mysqltest_1`.* TO `mysqltest_1`@`localhost`
|
||||||
alter table t1 add b int;
|
alter table t1 add b int;
|
||||||
alter table t1 drop partition p2;
|
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;
|
disconnect conn1;
|
||||||
connection default;
|
connection default;
|
||||||
grant drop on mysqltest_1.* to mysqltest_1@localhost;
|
grant drop on mysqltest_1.* to mysqltest_1@localhost;
|
||||||
@ -25,7 +25,7 @@ connection default;
|
|||||||
revoke alter on mysqltest_1.* from mysqltest_1@localhost;
|
revoke alter on mysqltest_1.* from mysqltest_1@localhost;
|
||||||
connect conn3,localhost,mysqltest_1,,mysqltest_1;
|
connect conn3,localhost,mysqltest_1,,mysqltest_1;
|
||||||
alter table t1 drop partition p3;
|
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;
|
disconnect conn3;
|
||||||
connection default;
|
connection default;
|
||||||
revoke select,alter,drop on mysqltest_1.* from mysqltest_1@localhost;
|
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,,;
|
connect con1,localhost,bug51770,,;
|
||||||
INSTALL PLUGIN example SONAME 'ha_example.so';
|
INSTALL PLUGIN example SONAME 'ha_example.so';
|
||||||
UNINSTALL PLUGIN example;
|
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;
|
connection default;
|
||||||
GRANT DELETE ON mysql.plugin TO bug51770@localhost;
|
GRANT DELETE ON mysql.plugin TO bug51770@localhost;
|
||||||
connection con1;
|
connection con1;
|
||||||
|
@ -216,7 +216,7 @@ new trigger: 10
|
|||||||
drop trigger t1_bd;
|
drop trigger t1_bd;
|
||||||
set @val=11;
|
set @val=11;
|
||||||
execute stmt using @val;
|
execute stmt using @val;
|
||||||
call p_verify_reprepare_count(1);
|
call p_verify_reprepare_count(0);
|
||||||
SUCCESS
|
SUCCESS
|
||||||
|
|
||||||
select @message;
|
select @message;
|
||||||
@ -226,7 +226,7 @@ Test 6-e: removing a relevant trigger
|
|||||||
drop trigger t1_bi;
|
drop trigger t1_bi;
|
||||||
set @val=12;
|
set @val=12;
|
||||||
execute stmt using @val;
|
execute stmt using @val;
|
||||||
call p_verify_reprepare_count(1);
|
call p_verify_reprepare_count(0);
|
||||||
SUCCESS
|
SUCCESS
|
||||||
|
|
||||||
select @message;
|
select @message;
|
||||||
@ -386,7 +386,7 @@ a
|
|||||||
flush table t1;
|
flush table t1;
|
||||||
set @var=9;
|
set @var=9;
|
||||||
execute stmt using @var;
|
execute stmt using @var;
|
||||||
call p_verify_reprepare_count(1);
|
call p_verify_reprepare_count(0);
|
||||||
SUCCESS
|
SUCCESS
|
||||||
|
|
||||||
select * from t2;
|
select * from t2;
|
||||||
@ -834,7 +834,7 @@ a b c
|
|||||||
10 20 50
|
10 20 50
|
||||||
20 40 100
|
20 40 100
|
||||||
30 60 150
|
30 60 150
|
||||||
call p_verify_reprepare_count(1);
|
call p_verify_reprepare_count(0);
|
||||||
SUCCESS
|
SUCCESS
|
||||||
|
|
||||||
# Check that we properly handle ALTER VIEW statements.
|
# Check that we properly handle ALTER VIEW statements.
|
||||||
@ -1214,7 +1214,7 @@ drop trigger v2_bi;
|
|||||||
set @message=null;
|
set @message=null;
|
||||||
set @var=9;
|
set @var=9;
|
||||||
execute stmt using @var;
|
execute stmt using @var;
|
||||||
call p_verify_reprepare_count(1);
|
call p_verify_reprepare_count(0);
|
||||||
SUCCESS
|
SUCCESS
|
||||||
|
|
||||||
select @message;
|
select @message;
|
||||||
@ -2588,7 +2588,7 @@ SELECT * FROM t1;
|
|||||||
a
|
a
|
||||||
2048
|
2048
|
||||||
1025
|
1025
|
||||||
1024
|
2048
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
# End of 10.1 tests
|
# End of 10.1 tests
|
||||||
|
@ -252,7 +252,8 @@ drop trigger t1_bd;
|
|||||||
|
|
||||||
set @val=11;
|
set @val=11;
|
||||||
execute stmt using @val;
|
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;
|
select @message;
|
||||||
|
|
||||||
--echo Test 6-e: removing a relevant trigger
|
--echo Test 6-e: removing a relevant trigger
|
||||||
@ -261,7 +262,8 @@ drop trigger t1_bi;
|
|||||||
|
|
||||||
set @val=12;
|
set @val=12;
|
||||||
execute stmt using @val;
|
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;
|
select @message;
|
||||||
set @val=13;
|
set @val=13;
|
||||||
execute stmt using @val;
|
execute stmt using @val;
|
||||||
@ -376,7 +378,8 @@ select * from t3;
|
|||||||
flush table t1;
|
flush table t1;
|
||||||
set @var=9;
|
set @var=9;
|
||||||
execute stmt using @var;
|
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 t2;
|
||||||
select * from t3;
|
select * from t3;
|
||||||
drop view v1;
|
drop view v1;
|
||||||
@ -745,7 +748,7 @@ call p_verify_reprepare_count(1);
|
|||||||
flush table t2;
|
flush table t2;
|
||||||
|
|
||||||
execute stmt;
|
execute stmt;
|
||||||
call p_verify_reprepare_count(1);
|
call p_verify_reprepare_count(0);
|
||||||
|
|
||||||
--echo # Check that we properly handle ALTER VIEW statements.
|
--echo # Check that we properly handle ALTER VIEW statements.
|
||||||
execute stmt;
|
execute stmt;
|
||||||
@ -973,7 +976,8 @@ drop trigger v2_bi;
|
|||||||
set @message=null;
|
set @message=null;
|
||||||
set @var=9;
|
set @var=9;
|
||||||
execute stmt using @var;
|
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;
|
select @message;
|
||||||
create trigger v2_bi after insert on v2 for each row set @message="v2_ai";
|
create trigger v2_bi after insert on v2 for each row set @message="v2_ai";
|
||||||
set @var= 10;
|
set @var= 10;
|
||||||
|
@ -28,7 +28,7 @@ execute s_t9 ;
|
|||||||
my_col
|
my_col
|
||||||
1
|
1
|
||||||
select a as my_col from t1;
|
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;
|
connection default;
|
||||||
grant select on mysqltest.t1 to second_user@localhost
|
grant select on mysqltest.t1 to second_user@localhost
|
||||||
identified by 'looser' ;
|
identified by 'looser' ;
|
||||||
@ -71,7 +71,7 @@ Grants for second_user@localhost
|
|||||||
GRANT SELECT ON `mysqltest`.`t9` TO `second_user`@`localhost`
|
GRANT SELECT ON `mysqltest`.`t9` TO `second_user`@`localhost`
|
||||||
GRANT USAGE ON *.* TO `second_user`@`localhost` IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
GRANT USAGE ON *.* TO `second_user`@`localhost` IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
||||||
execute s_t1 ;
|
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;
|
connection default;
|
||||||
disconnect con3;
|
disconnect con3;
|
||||||
revoke all privileges, grant option from second_user@localhost ;
|
revoke all privileges, grant option from second_user@localhost ;
|
||||||
|
@ -541,25 +541,25 @@ show create database mysqltest;
|
|||||||
Database Create Database
|
Database Create Database
|
||||||
mysqltest CREATE DATABASE `mysqltest` /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci */
|
mysqltest CREATE DATABASE `mysqltest` /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci */
|
||||||
drop table t1;
|
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;
|
drop database mysqltest;
|
||||||
ERROR 42000: Access denied for user 'mysqltest_1'@'localhost' to database 'mysqltest'
|
ERROR 42000: Access denied for user 'mysqltest_1'@'localhost' to database 'mysqltest'
|
||||||
disconnect con1;
|
disconnect con1;
|
||||||
connect con2,localhost,mysqltest_2,,test;
|
connect con2,localhost,mysqltest_2,,test;
|
||||||
connection con2;
|
connection con2;
|
||||||
select * from mysqltest.t1;
|
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;
|
show create database mysqltest;
|
||||||
ERROR 42000: Access denied for user 'mysqltest_2'@'localhost' to database 'mysqltest'
|
ERROR 42000: Access denied for user 'mysqltest_2'@'localhost' to database 'mysqltest'
|
||||||
drop table mysqltest.t1;
|
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;
|
drop database mysqltest;
|
||||||
ERROR 42000: Access denied for user 'mysqltest_2'@'localhost' to database 'mysqltest'
|
ERROR 42000: Access denied for user 'mysqltest_2'@'localhost' to database 'mysqltest'
|
||||||
disconnect con2;
|
disconnect con2;
|
||||||
connect con3,localhost,mysqltest_3,,test;
|
connect con3,localhost,mysqltest_3,,test;
|
||||||
connection con3;
|
connection con3;
|
||||||
select * from mysqltest.t1;
|
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;
|
show create database mysqltest;
|
||||||
Database Create Database
|
Database Create Database
|
||||||
mysqltest CREATE DATABASE `mysqltest` /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci */
|
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
|
# Making sure that user1 does not have privileges to db1.t1
|
||||||
#
|
#
|
||||||
SHOW CREATE TABLE 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;
|
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
|
# Trigger: using TYPE OF with a table we don't have access to
|
||||||
#
|
#
|
||||||
@ -39,7 +39,7 @@ SET NEW.b = 10;
|
|||||||
END
|
END
|
||||||
$$
|
$$
|
||||||
INSERT INTO t1 (a) VALUES (10);
|
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;
|
SELECT * FROM t1;
|
||||||
a b
|
a b
|
||||||
10 20
|
10 20
|
||||||
@ -56,7 +56,7 @@ SELECT a;
|
|||||||
END;
|
END;
|
||||||
$$
|
$$
|
||||||
CALL p1;
|
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;
|
DROP PROCEDURE p1;
|
||||||
#
|
#
|
||||||
# Stored procedure: Using TYPE OF for with a table that we don't have access to
|
# Stored procedure: Using TYPE OF for with a table that we don't have access to
|
||||||
@ -72,7 +72,7 @@ END;
|
|||||||
$$
|
$$
|
||||||
connection conn1;
|
connection conn1;
|
||||||
CALL p1;
|
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;
|
DROP PROCEDURE p1;
|
||||||
connection default;
|
connection default;
|
||||||
CREATE PROCEDURE p1()
|
CREATE PROCEDURE p1()
|
||||||
@ -84,7 +84,7 @@ END;
|
|||||||
$$
|
$$
|
||||||
connection conn1;
|
connection conn1;
|
||||||
CALL p1;
|
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;
|
DROP PROCEDURE p1;
|
||||||
#
|
#
|
||||||
# Stored procedure: Using TYPE OF for with a table that we don't have access to
|
# 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;
|
END;
|
||||||
$$
|
$$
|
||||||
SELECT f1();
|
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 FUNCTION f1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
@ -147,7 +147,7 @@ END;
|
|||||||
$$
|
$$
|
||||||
connection conn1;
|
connection conn1;
|
||||||
SELECT f1();
|
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 FUNCTION f1;
|
||||||
DROP TABLE t1;
|
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
|
# Making sure that user1 has access to db1.t1.a, but not to db1.t1.b
|
||||||
#
|
#
|
||||||
SHOW CREATE TABLE 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;
|
SHOW FIELDS IN db1.t1;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
a int(11) YES NULL
|
a int(11) YES NULL
|
||||||
|
@ -50,7 +50,7 @@ select db1_secret.db();
|
|||||||
db1_secret.db()
|
db1_secret.db()
|
||||||
test
|
test
|
||||||
select * from db1_secret.t1;
|
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;
|
create procedure db1_secret.dummy() begin end;
|
||||||
ERROR 42000: Access denied for user 'user1'@'localhost' to database 'db1_secret'
|
ERROR 42000: Access denied for user 'user1'@'localhost' to database 'db1_secret'
|
||||||
drop procedure db1_secret.dummy;
|
drop procedure db1_secret.dummy;
|
||||||
@ -65,7 +65,7 @@ select db1_secret.db();
|
|||||||
db1_secret.db()
|
db1_secret.db()
|
||||||
test
|
test
|
||||||
select * from db1_secret.t1;
|
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;
|
create procedure db1_secret.dummy() begin end;
|
||||||
ERROR 42000: Access denied for user ''@'%' to database 'db1_secret'
|
ERROR 42000: Access denied for user ''@'%' to database 'db1_secret'
|
||||||
drop procedure db1_secret.dummy;
|
drop procedure db1_secret.dummy;
|
||||||
@ -102,14 +102,14 @@ db()
|
|||||||
test
|
test
|
||||||
connection con2user1;
|
connection con2user1;
|
||||||
call db1_secret.stamp(5);
|
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();
|
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;
|
connection con3anon;
|
||||||
call db1_secret.stamp(6);
|
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();
|
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;
|
connection con1root;
|
||||||
drop database if exists db2;
|
drop database if exists db2;
|
||||||
create database db2;
|
create database db2;
|
||||||
@ -127,7 +127,7 @@ connection con2user1;
|
|||||||
use db2;
|
use db2;
|
||||||
create procedure p () insert into t2 values (1);
|
create procedure p () insert into t2 values (1);
|
||||||
call p();
|
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,,;
|
connect con4user2,localhost,user2,,;
|
||||||
connection con4user2;
|
connection con4user2;
|
||||||
use db2;
|
use db2;
|
||||||
@ -405,9 +405,9 @@ id int(11) YES NULL
|
|||||||
call db_bug14533.bug14533_2();
|
call db_bug14533.bug14533_2();
|
||||||
id
|
id
|
||||||
desc db_bug14533.t1;
|
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;
|
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;
|
connection default;
|
||||||
disconnect user_bug14533;
|
disconnect user_bug14533;
|
||||||
drop user user_bug14533@localhost;
|
drop user user_bug14533@localhost;
|
||||||
@ -567,24 +567,24 @@ END|
|
|||||||
CREATE SQL SECURITY INVOKER VIEW v1 AS SELECT f_evil();
|
CREATE SQL SECURITY INVOKER VIEW v1 AS SELECT f_evil();
|
||||||
connect conn1, localhost, mysqltest_u1,,;
|
connect conn1, localhost, mysqltest_u1,,;
|
||||||
SELECT COUNT(*) FROM t1;
|
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();
|
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;
|
SELECT @a, @b;
|
||||||
@a @b
|
@a @b
|
||||||
mysqltest_u1@localhost NULL
|
mysqltest_u1@localhost NULL
|
||||||
SELECT f_suid(f_evil());
|
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;
|
SELECT @a, @b;
|
||||||
@a @b
|
@a @b
|
||||||
mysqltest_u1@localhost NULL
|
mysqltest_u1@localhost NULL
|
||||||
CALL p_suid(f_evil());
|
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;
|
SELECT @a, @b;
|
||||||
@a @b
|
@a @b
|
||||||
mysqltest_u1@localhost NULL
|
mysqltest_u1@localhost NULL
|
||||||
SELECT * FROM v1;
|
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;
|
SELECT @a, @b;
|
||||||
@a @b
|
@a @b
|
||||||
mysqltest_u1@localhost NULL
|
mysqltest_u1@localhost NULL
|
||||||
|
@ -243,13 +243,13 @@ return (select * from db37908.t1 limit 1)|
|
|||||||
connect user1,localhost,mysqltest_1,,test;
|
connect user1,localhost,mysqltest_1,,test;
|
||||||
connection user1;
|
connection user1;
|
||||||
select * from db37908.t1;
|
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);
|
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);
|
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());
|
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;
|
connection default;
|
||||||
disconnect user1;
|
disconnect user1;
|
||||||
disconnect root;
|
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')
|
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);
|
where t1.a = t2.c and t2.d = (select max(d) from t2);
|
||||||
select * from mysql.time_zone_name;
|
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;
|
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;
|
connection default;
|
||||||
disconnect tzuser;
|
disconnect tzuser;
|
||||||
connection default;
|
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')
|
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);
|
where t1.a = t2.c and t2.d = (select max(d) from t2);
|
||||||
select * from mysql.time_zone_name;
|
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;
|
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;
|
drop table t1, t2;
|
||||||
create table t1 (a int, b datetime);
|
create table t1 (a int, b datetime);
|
||||||
create table t2 (a int, b varchar(40));
|
create table t2 (a int, b varchar(40));
|
||||||
@ -82,10 +82,10 @@ a lb
|
|||||||
1 2001-01-01 03:00:00
|
1 2001-01-01 03:00:00
|
||||||
2 2002-01-01 03:00:00
|
2 2002-01-01 03:00:00
|
||||||
select * from v1, mysql.time_zone;
|
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;
|
drop view v1;
|
||||||
create view v1 as select a, convert_tz(b, 'UTC', 'Europe/Moscow') as lb from t1, mysql.time_zone;
|
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;
|
connection default;
|
||||||
disconnect tzuser3;
|
disconnect tzuser3;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -23,7 +23,7 @@ connection wl2818_definer_con;
|
|||||||
CREATE TRIGGER trg1 AFTER INSERT ON t1
|
CREATE TRIGGER trg1 AFTER INSERT ON t1
|
||||||
FOR EACH ROW
|
FOR EACH ROW
|
||||||
INSERT INTO t2 VALUES(CURRENT_USER());
|
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;
|
disconnect wl2818_definer_con;
|
||||||
connection default;
|
connection default;
|
||||||
GRANT TRIGGER ON mysqltest_db1.t1 TO mysqltest_dfn@localhost;
|
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;
|
connect wl2818_definer_con,localhost,mysqltest_dfn,,mysqltest_db1;
|
||||||
connection wl2818_definer_con;
|
connection wl2818_definer_con;
|
||||||
DROP TRIGGER trg1;
|
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;
|
disconnect wl2818_definer_con;
|
||||||
connect wl2818_definer_con,localhost,mysqltest_dfn,,mysqltest_db1;
|
connect wl2818_definer_con,localhost,mysqltest_dfn,,mysqltest_db1;
|
||||||
connection wl2818_definer_con;
|
connection wl2818_definer_con;
|
||||||
INSERT INTO t1 VALUES(0);
|
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;
|
disconnect wl2818_definer_con;
|
||||||
connection default;
|
connection default;
|
||||||
GRANT TRIGGER ON mysqltest_db1.t1 TO mysqltest_dfn@localhost;
|
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;
|
connection wl2818_invoker_con;
|
||||||
use mysqltest_db1;
|
use mysqltest_db1;
|
||||||
INSERT INTO t1 VALUES(3);
|
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;
|
SELECT * FROM t1;
|
||||||
num_value
|
num_value
|
||||||
1
|
1
|
||||||
@ -563,7 +563,7 @@ INSERT INTO t2 VALUES (2);
|
|||||||
connection default;
|
connection default;
|
||||||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
|
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;
|
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 DATABASE mysqltest_db1;
|
||||||
DROP USER mysqltest_u1@localhost;
|
DROP USER mysqltest_u1@localhost;
|
||||||
disconnect con1;
|
disconnect con1;
|
||||||
|
@ -2679,5 +2679,90 @@ ALTER TABLE t4 ADD INDEX (`NULL`);
|
|||||||
DROP TABLE t1, t2, t3, t4;
|
DROP TABLE t1, t2, t3, t4;
|
||||||
set @@default_storage_engine=@save_default_storage_engine;
|
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
|
# End of 10.3 tests
|
||||||
#
|
#
|
||||||
|
@ -1913,6 +1913,76 @@ DROP TABLE t1, t2, t3, t4;
|
|||||||
|
|
||||||
set @@default_storage_engine=@save_default_storage_engine;
|
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 #
|
||||||
--echo # End of 10.3 tests
|
--echo # End of 10.3 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -6823,6 +6823,34 @@ r
|
|||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1;
|
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
|
# End of 10.2 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
@ -6539,6 +6539,46 @@ select * from (select sum((select * from cte)) as r) dt2;
|
|||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1;
|
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 #
|
||||||
--echo # End of 10.2 tests
|
--echo # End of 10.2 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -25,13 +25,13 @@ create definer=root@localhost view v1 as select * from mysqltest.t1;
|
|||||||
ERROR 42000: Access denied; you need (at least one of) the SUPER, SET USER privilege(s) for this operation
|
ERROR 42000: Access denied; you need (at least one of) the SUPER, SET USER privilege(s) for this operation
|
||||||
create view v1 as select * from mysqltest.t1;
|
create view v1 as select * from mysqltest.t1;
|
||||||
alter view v1 as select * from mysqltest.t1;
|
alter view v1 as select * from mysqltest.t1;
|
||||||
ERROR 42000: DROP command denied to user 'mysqltest_1'@'localhost' for table 'v1'
|
ERROR 42000: DROP command denied to user 'mysqltest_1'@'localhost' for table `test`.`v1`
|
||||||
create or replace view v1 as select * from mysqltest.t1;
|
create or replace view v1 as select * from mysqltest.t1;
|
||||||
ERROR 42000: DROP command denied to user 'mysqltest_1'@'localhost' for table 'v1'
|
ERROR 42000: DROP command denied to user 'mysqltest_1'@'localhost' for table `test`.`v1`
|
||||||
create view mysqltest.v2 as select * from mysqltest.t1;
|
create view mysqltest.v2 as select * from mysqltest.t1;
|
||||||
ERROR 42000: CREATE VIEW command denied to user 'mysqltest_1'@'localhost' for table 'v2'
|
ERROR 42000: CREATE VIEW command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v2`
|
||||||
create view v2 as select * from mysqltest.t2;
|
create view v2 as select * from mysqltest.t2;
|
||||||
ERROR 42000: ANY command denied to user 'mysqltest_1'@'localhost' for table 't2'
|
ERROR 42000: ANY command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`t2`
|
||||||
connection root;
|
connection root;
|
||||||
show create view v1;
|
show create view v1;
|
||||||
View Create View character_set_client collation_connection
|
View Create View character_set_client collation_connection
|
||||||
@ -98,7 +98,7 @@ c
|
|||||||
select c from mysqltest.v4;
|
select c from mysqltest.v4;
|
||||||
c
|
c
|
||||||
select c from mysqltest.v5;
|
select c from mysqltest.v5;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'v5'
|
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v5`
|
||||||
show columns from mysqltest.v1;
|
show columns from mysqltest.v1;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
c bigint(12) YES NULL
|
c bigint(12) YES NULL
|
||||||
@ -110,23 +110,23 @@ d bigint(12) YES NULL
|
|||||||
explain select c from mysqltest.v1;
|
explain select c from mysqltest.v1;
|
||||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||||
show create view mysqltest.v1;
|
show create view mysqltest.v1;
|
||||||
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table 'v1'
|
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v1`
|
||||||
explain select c from mysqltest.v2;
|
explain select c from mysqltest.v2;
|
||||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||||
show create view mysqltest.v2;
|
show create view mysqltest.v2;
|
||||||
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table 'v2'
|
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v2`
|
||||||
explain select c from mysqltest.v3;
|
explain select c from mysqltest.v3;
|
||||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||||
show create view mysqltest.v3;
|
show create view mysqltest.v3;
|
||||||
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table 'v3'
|
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v3`
|
||||||
explain select c from mysqltest.v4;
|
explain select c from mysqltest.v4;
|
||||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||||
show create view mysqltest.v4;
|
show create view mysqltest.v4;
|
||||||
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table 'v4'
|
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v4`
|
||||||
explain select c from mysqltest.v5;
|
explain select c from mysqltest.v5;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'v5'
|
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v5`
|
||||||
show create view mysqltest.v5;
|
show create view mysqltest.v5;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'v5'
|
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v5`
|
||||||
connection root;
|
connection root;
|
||||||
grant select on mysqltest.v5 to mysqltest_1@localhost;
|
grant select on mysqltest.v5 to mysqltest_1@localhost;
|
||||||
connection user1;
|
connection user1;
|
||||||
@ -136,7 +136,7 @@ v5 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI
|
|||||||
explain select c from mysqltest.v1;
|
explain select c from mysqltest.v1;
|
||||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||||
show create view mysqltest.v1;
|
show create view mysqltest.v1;
|
||||||
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table 'v1'
|
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v1`
|
||||||
connection root;
|
connection root;
|
||||||
grant show view on mysqltest.v1 to mysqltest_1@localhost;
|
grant show view on mysqltest.v1 to mysqltest_1@localhost;
|
||||||
grant select on mysqltest.t1 to mysqltest_1@localhost;
|
grant select on mysqltest.t1 to mysqltest_1@localhost;
|
||||||
@ -151,17 +151,17 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI
|
|||||||
explain select c from mysqltest.v2;
|
explain select c from mysqltest.v2;
|
||||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||||
show create view mysqltest.v2;
|
show create view mysqltest.v2;
|
||||||
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table 'v2'
|
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v2`
|
||||||
explain select c from mysqltest.v3;
|
explain select c from mysqltest.v3;
|
||||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||||
show create view mysqltest.v3;
|
show create view mysqltest.v3;
|
||||||
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table 'v3'
|
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v3`
|
||||||
explain select c from mysqltest.v4;
|
explain select c from mysqltest.v4;
|
||||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||||
show create view mysqltest.v4;
|
show create view mysqltest.v4;
|
||||||
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table 'v4'
|
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v4`
|
||||||
explain select c from mysqltest.v5;
|
explain select c from mysqltest.v5;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'v5'
|
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v5`
|
||||||
connection root;
|
connection root;
|
||||||
grant show view on mysqltest.* to mysqltest_1@localhost;
|
grant show view on mysqltest.* to mysqltest_1@localhost;
|
||||||
connection user1;
|
connection user1;
|
||||||
@ -248,9 +248,9 @@ ERROR 42000: UPDATE command denied to user 'mysqltest_1'@'localhost' for column
|
|||||||
update v2 set c=a+c;
|
update v2 set c=a+c;
|
||||||
ERROR 42000: UPDATE command denied to user 'mysqltest_1'@'localhost' for column 'c' in table 'v2'
|
ERROR 42000: UPDATE command denied to user 'mysqltest_1'@'localhost' for column 'c' in table 'v2'
|
||||||
update t2,v3 set v3.a=v3.a+v3.c where t2.x=v3.c;
|
update t2,v3 set v3.a=v3.a+v3.c where t2.x=v3.c;
|
||||||
ERROR 42000: UPDATE command denied to user 'mysqltest_1'@'localhost' for table 'v3'
|
ERROR 42000: UPDATE command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v3`
|
||||||
update v3 set a=a+c;
|
update v3 set a=a+c;
|
||||||
ERROR 42000: UPDATE command denied to user 'mysqltest_1'@'localhost' for table 'v3'
|
ERROR 42000: UPDATE command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v3`
|
||||||
use test;
|
use test;
|
||||||
connection root;
|
connection root;
|
||||||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost;
|
REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost;
|
||||||
@ -281,9 +281,9 @@ select * from t1;
|
|||||||
a b
|
a b
|
||||||
5 10
|
5 10
|
||||||
delete v2 from t2,v2 where t2.x=v2.c;
|
delete v2 from t2,v2 where t2.x=v2.c;
|
||||||
ERROR 42000: DELETE command denied to user 'mysqltest_1'@'localhost' for table 'v2'
|
ERROR 42000: DELETE command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v2`
|
||||||
delete from v2 where c < 4;
|
delete from v2 where c < 4;
|
||||||
ERROR 42000: DELETE command denied to user 'mysqltest_1'@'localhost' for table 'v2'
|
ERROR 42000: DELETE command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v2`
|
||||||
use test;
|
use test;
|
||||||
connection root;
|
connection root;
|
||||||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost;
|
REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost;
|
||||||
@ -316,9 +316,9 @@ a b
|
|||||||
5 6
|
5 6
|
||||||
3 4
|
3 4
|
||||||
insert into v2 values (5,6);
|
insert into v2 values (5,6);
|
||||||
ERROR 42000: INSERT command denied to user 'mysqltest_1'@'localhost' for table 'v2'
|
ERROR 42000: INSERT command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v2`
|
||||||
insert into v2 select x,y from t2;
|
insert into v2 select x,y from t2;
|
||||||
ERROR 42000: INSERT command denied to user 'mysqltest_1'@'localhost' for table 'v2'
|
ERROR 42000: INSERT command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v2`
|
||||||
use test;
|
use test;
|
||||||
connection root;
|
connection root;
|
||||||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost;
|
REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_1@localhost;
|
||||||
@ -336,7 +336,7 @@ connection user1;
|
|||||||
create view v1 as select * from mysqltest.t1;
|
create view v1 as select * from mysqltest.t1;
|
||||||
create view v2 as select b from mysqltest.t2;
|
create view v2 as select b from mysqltest.t2;
|
||||||
create view mysqltest.v1 as select * from mysqltest.t1;
|
create view mysqltest.v1 as select * from mysqltest.t1;
|
||||||
ERROR 42000: CREATE VIEW command denied to user 'mysqltest_1'@'localhost' for table 'v1'
|
ERROR 42000: CREATE VIEW command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v1`
|
||||||
create view v3 as select a from mysqltest.t2;
|
create view v3 as select a from mysqltest.t2;
|
||||||
ERROR 42000: ANY command denied to user 'mysqltest_1'@'localhost' for column 'a' in table 't2'
|
ERROR 42000: ANY command denied to user 'mysqltest_1'@'localhost' for column 'a' in table 't2'
|
||||||
connection root;
|
connection root;
|
||||||
@ -605,7 +605,7 @@ connection user1;
|
|||||||
use mysqltest;
|
use mysqltest;
|
||||||
LOCK TABLES v1 READ;
|
LOCK TABLES v1 READ;
|
||||||
SHOW CREATE TABLE v1;
|
SHOW CREATE TABLE v1;
|
||||||
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table 'v1'
|
ERROR 42000: SHOW VIEW command denied to user 'mysqltest_1'@'localhost' for table `mysqltest`.`v1`
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
use test;
|
use test;
|
||||||
connection root;
|
connection root;
|
||||||
@ -664,29 +664,29 @@ ERROR HY000: View 'mysqltest1.v_t1' references invalid table(s) or column(s) or
|
|||||||
SELECT 1 FROM mysqltest1.v_t1;
|
SELECT 1 FROM mysqltest1.v_t1;
|
||||||
ERROR HY000: View 'mysqltest1.v_t1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
ERROR HY000: View 'mysqltest1.v_t1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||||
SELECT * FROM mysqltest1.t1;
|
SELECT * FROM mysqltest1.t1;
|
||||||
ERROR 42000: SELECT command denied to user 'readonly'@'localhost' for table 't1'
|
ERROR 42000: SELECT command denied to user 'readonly'@'localhost' for table `mysqltest1`.`t1`
|
||||||
SELECT * FROM mysqltest1.v_ts;
|
SELECT * FROM mysqltest1.v_ts;
|
||||||
x
|
x
|
||||||
1
|
1
|
||||||
2
|
2
|
||||||
SELECT * FROM mysqltest1.v_ts, mysqltest1.t1 WHERE mysqltest1.t1.x = mysqltest1.v_ts.x;
|
SELECT * FROM mysqltest1.v_ts, mysqltest1.t1 WHERE mysqltest1.t1.x = mysqltest1.v_ts.x;
|
||||||
ERROR 42000: SELECT command denied to user 'readonly'@'localhost' for table 't1'
|
ERROR 42000: SELECT command denied to user 'readonly'@'localhost' for table `mysqltest1`.`t1`
|
||||||
SELECT * FROM mysqltest1.v_ti;
|
SELECT * FROM mysqltest1.v_ti;
|
||||||
ERROR 42000: SELECT command denied to user 'readonly'@'localhost' for table 'v_ti'
|
ERROR 42000: SELECT command denied to user 'readonly'@'localhost' for table `mysqltest1`.`v_ti`
|
||||||
INSERT INTO mysqltest1.v_ts VALUES (100);
|
INSERT INTO mysqltest1.v_ts VALUES (100);
|
||||||
ERROR 42000: INSERT command denied to user 'readonly'@'localhost' for table 'v_ts'
|
ERROR 42000: INSERT command denied to user 'readonly'@'localhost' for table `mysqltest1`.`v_ts`
|
||||||
INSERT INTO mysqltest1.v_ti VALUES (100);
|
INSERT INTO mysqltest1.v_ti VALUES (100);
|
||||||
UPDATE mysqltest1.v_ts SET x= 200 WHERE x = 100;
|
UPDATE mysqltest1.v_ts SET x= 200 WHERE x = 100;
|
||||||
ERROR 42000: UPDATE command denied to user 'readonly'@'localhost' for table 'v_ts'
|
ERROR 42000: UPDATE command denied to user 'readonly'@'localhost' for table `mysqltest1`.`v_ts`
|
||||||
UPDATE mysqltest1.v_ts SET x= 200;
|
UPDATE mysqltest1.v_ts SET x= 200;
|
||||||
ERROR 42000: UPDATE command denied to user 'readonly'@'localhost' for table 'v_ts'
|
ERROR 42000: UPDATE command denied to user 'readonly'@'localhost' for table `mysqltest1`.`v_ts`
|
||||||
UPDATE mysqltest1.v_tu SET x= 200 WHERE x = 100;
|
UPDATE mysqltest1.v_tu SET x= 200 WHERE x = 100;
|
||||||
UPDATE mysqltest1.v_tus SET x= 200 WHERE x = 100;
|
UPDATE mysqltest1.v_tus SET x= 200 WHERE x = 100;
|
||||||
UPDATE mysqltest1.v_tu SET x= 200;
|
UPDATE mysqltest1.v_tu SET x= 200;
|
||||||
DELETE FROM mysqltest1.v_ts WHERE x= 200;
|
DELETE FROM mysqltest1.v_ts WHERE x= 200;
|
||||||
ERROR 42000: DELETE command denied to user 'readonly'@'localhost' for table 'v_ts'
|
ERROR 42000: DELETE command denied to user 'readonly'@'localhost' for table `mysqltest1`.`v_ts`
|
||||||
DELETE FROM mysqltest1.v_ts;
|
DELETE FROM mysqltest1.v_ts;
|
||||||
ERROR 42000: DELETE command denied to user 'readonly'@'localhost' for table 'v_ts'
|
ERROR 42000: DELETE command denied to user 'readonly'@'localhost' for table `mysqltest1`.`v_ts`
|
||||||
DELETE FROM mysqltest1.v_td WHERE x= 200;
|
DELETE FROM mysqltest1.v_td WHERE x= 200;
|
||||||
ERROR 42000: SELECT command denied to user 'readonly'@'localhost' for column 'x' in table 'v_td'
|
ERROR 42000: SELECT command denied to user 'readonly'@'localhost' for column 'x' in table 'v_td'
|
||||||
DELETE FROM mysqltest1.v_tds WHERE x= 200;
|
DELETE FROM mysqltest1.v_tds WHERE x= 200;
|
||||||
@ -899,11 +899,11 @@ REVOKE SELECT ON t2 FROM mysqltest_u2@localhost;
|
|||||||
UPDATE t2 SET s = 'private' WHERE s = 'public';
|
UPDATE t2 SET s = 'private' WHERE s = 'public';
|
||||||
connection conn2;
|
connection conn2;
|
||||||
SELECT * FROM mysqltest_db1.v1, mysqltest_db1.t2;
|
SELECT * FROM mysqltest_db1.v1, mysqltest_db1.t2;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqltest_u2'@'localhost' for table 't2'
|
ERROR 42000: SELECT command denied to user 'mysqltest_u2'@'localhost' for table `mysqltest_db1`.`t2`
|
||||||
EXECUTE stmt1;
|
EXECUTE stmt1;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqltest_u2'@'localhost' for table 't2'
|
ERROR 42000: SELECT command denied to user 'mysqltest_u2'@'localhost' for table `mysqltest_db1`.`t2`
|
||||||
EXECUTE stmt2;
|
EXECUTE stmt2;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqltest_u2'@'localhost' for table 't2'
|
ERROR 42000: SELECT command denied to user 'mysqltest_u2'@'localhost' for table `mysqltest_db1`.`t2`
|
||||||
disconnect conn2;
|
disconnect conn2;
|
||||||
disconnect conn1;
|
disconnect conn1;
|
||||||
connection default;
|
connection default;
|
||||||
@ -928,9 +928,9 @@ GRANT SELECT ON db26813.t1 TO u26813@localhost;
|
|||||||
connect u1,localhost,u26813,,db26813;
|
connect u1,localhost,u26813,,db26813;
|
||||||
connection u1;
|
connection u1;
|
||||||
ALTER VIEW v1 AS SELECT f2 FROM t1;
|
ALTER VIEW v1 AS SELECT f2 FROM t1;
|
||||||
ERROR 42000: CREATE VIEW command denied to user 'u26813'@'localhost' for table 'v1'
|
ERROR 42000: CREATE VIEW command denied to user 'u26813'@'localhost' for table `db26813`.`v1`
|
||||||
ALTER VIEW v2 AS SELECT f2 FROM t1;
|
ALTER VIEW v2 AS SELECT f2 FROM t1;
|
||||||
ERROR 42000: DROP command denied to user 'u26813'@'localhost' for table 'v2'
|
ERROR 42000: DROP command denied to user 'u26813'@'localhost' for table `db26813`.`v2`
|
||||||
ALTER VIEW v3 AS SELECT f2 FROM t1;
|
ALTER VIEW v3 AS SELECT f2 FROM t1;
|
||||||
ERROR 42000: Access denied; you need (at least one of) the SUPER, SET USER privilege(s) for this operation
|
ERROR 42000: Access denied; you need (at least one of) the SUPER, SET USER privilege(s) for this operation
|
||||||
connection root;
|
connection root;
|
||||||
@ -1093,13 +1093,13 @@ f1
|
|||||||
SELECT f2 FROM t1;
|
SELECT f2 FROM t1;
|
||||||
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for column 'f2' in table 't1'
|
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for column 'f2' in table 't1'
|
||||||
SELECT * FROM t1;
|
SELECT * FROM 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 f1 FROM v1;
|
SELECT f1 FROM v1;
|
||||||
f1
|
f1
|
||||||
SELECT f2 FROM v1;
|
SELECT f2 FROM v1;
|
||||||
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for column 'f2' in table 'v1'
|
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for column 'f2' in table 'v1'
|
||||||
SELECT * FROM v1;
|
SELECT * FROM v1;
|
||||||
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table 'v1'
|
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table `db1`.`v1`
|
||||||
connection default;
|
connection default;
|
||||||
disconnect root;
|
disconnect root;
|
||||||
disconnect addconfoo;
|
disconnect addconfoo;
|
||||||
@ -1196,9 +1196,9 @@ disconnect test11765687;
|
|||||||
connect test11765687,localhost,cecil,,mysqltest1;
|
connect test11765687,localhost,cecil,,mysqltest1;
|
||||||
connection test11765687;
|
connection test11765687;
|
||||||
select * from v1;
|
select * from v1;
|
||||||
ERROR 42000: SELECT command denied to user 'cecil'@'localhost' for table 'v1'
|
ERROR 42000: SELECT command denied to user 'cecil'@'localhost' for table `mysqltest1`.`v1`
|
||||||
explain select * from v1;
|
explain select * from v1;
|
||||||
ERROR 42000: SELECT command denied to user 'cecil'@'localhost' for table 'v1'
|
ERROR 42000: SELECT command denied to user 'cecil'@'localhost' for table `mysqltest1`.`v1`
|
||||||
disconnect test11765687;
|
disconnect test11765687;
|
||||||
... as dan
|
... as dan
|
||||||
connect test11765687,localhost,dan,,mysqltest1;
|
connect test11765687,localhost,dan,,mysqltest1;
|
||||||
@ -1226,11 +1226,11 @@ show create view v2;
|
|||||||
View Create View character_set_client collation_connection
|
View Create View character_set_client collation_connection
|
||||||
v2 CREATE ALGORITHM=UNDEFINED DEFINER=`alice`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS select `v1`.`i` AS `i`,`t2`.`j` AS `j` from (`v1` join `t2`) latin1 latin1_swedish_ci
|
v2 CREATE ALGORITHM=UNDEFINED DEFINER=`alice`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS select `v1`.`i` AS `i`,`t2`.`j` AS `j` from (`v1` join `t2`) latin1 latin1_swedish_ci
|
||||||
explain select * from t1;
|
explain select * from t1;
|
||||||
ERROR 42000: SELECT command denied to user 'fiona'@'localhost' for table 't1'
|
ERROR 42000: SELECT command denied to user 'fiona'@'localhost' for table `mysqltest1`.`t1`
|
||||||
explain select * from v1;
|
explain select * from v1;
|
||||||
ERROR 42000: SELECT command denied to user 'fiona'@'localhost' for table 'v1'
|
ERROR 42000: SELECT command denied to user 'fiona'@'localhost' for table `mysqltest1`.`v1`
|
||||||
explain select * from t2;
|
explain select * from t2;
|
||||||
ERROR 42000: SELECT command denied to user 'fiona'@'localhost' for table 't2'
|
ERROR 42000: SELECT command denied to user 'fiona'@'localhost' for table `mysqltest1`.`t2`
|
||||||
explain select * from v2;
|
explain select * from v2;
|
||||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||||
disconnect test11765687;
|
disconnect test11765687;
|
||||||
@ -1240,7 +1240,7 @@ connection test11765687;
|
|||||||
select * from v2;
|
select * from v2;
|
||||||
i j
|
i j
|
||||||
explain select * from v1;
|
explain select * from v1;
|
||||||
ERROR 42000: SELECT command denied to user 'greg'@'localhost' for table 'v1'
|
ERROR 42000: SELECT command denied to user 'greg'@'localhost' for table `mysqltest1`.`v1`
|
||||||
explain select * from v2;
|
explain select * from v2;
|
||||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||||
disconnect test11765687;
|
disconnect test11765687;
|
||||||
@ -1248,9 +1248,9 @@ disconnect test11765687;
|
|||||||
connect test11765687,localhost,han,,mysqltest1;
|
connect test11765687,localhost,han,,mysqltest1;
|
||||||
connection test11765687;
|
connection test11765687;
|
||||||
select * from t3;
|
select * from t3;
|
||||||
ERROR 42000: SELECT command denied to user 'han'@'localhost' for table 't3'
|
ERROR 42000: SELECT command denied to user 'han'@'localhost' for table `mysqltest1`.`t3`
|
||||||
explain select * from t3;
|
explain select * from t3;
|
||||||
ERROR 42000: SELECT command denied to user 'han'@'localhost' for table 't3'
|
ERROR 42000: SELECT command denied to user 'han'@'localhost' for table `mysqltest1`.`t3`
|
||||||
select k from t3;
|
select k from t3;
|
||||||
k
|
k
|
||||||
explain select k from t3;
|
explain select k from t3;
|
||||||
@ -1290,9 +1290,9 @@ disconnect test11765687;
|
|||||||
connect test11765687,localhost,lena,,mysqltest1;
|
connect test11765687,localhost,lena,,mysqltest1;
|
||||||
connection test11765687;
|
connection test11765687;
|
||||||
select * from v2;
|
select * from v2;
|
||||||
ERROR 42000: SELECT command denied to user 'lena'@'localhost' for table 'v2'
|
ERROR 42000: SELECT command denied to user 'lena'@'localhost' for table `mysqltest1`.`v2`
|
||||||
explain select * from v2;
|
explain select * from v2;
|
||||||
ERROR 42000: SELECT command denied to user 'lena'@'localhost' for table 'v2'
|
ERROR 42000: SELECT command denied to user 'lena'@'localhost' for table `mysqltest1`.`v2`
|
||||||
disconnect test11765687;
|
disconnect test11765687;
|
||||||
... as mhairi
|
... as mhairi
|
||||||
connect test11765687,localhost,mhairi,,mysqltest1;
|
connect test11765687,localhost,mhairi,,mysqltest1;
|
||||||
@ -1412,9 +1412,9 @@ connect connection1, localhost, mysqluser1, , mysqltest1;
|
|||||||
This would lead to failed assertion.
|
This would lead to failed assertion.
|
||||||
CREATE VIEW v1 AS SELECT a, b FROM t1, t2;
|
CREATE VIEW v1 AS SELECT a, b FROM t1, t2;
|
||||||
SELECT * FROM v1;
|
SELECT * FROM v1;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table 'v1'
|
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table `mysqltest1`.`v1`
|
||||||
SELECT b FROM v1;
|
SELECT b FROM v1;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table 'v1'
|
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table `mysqltest1`.`v1`
|
||||||
disconnect connection1;
|
disconnect connection1;
|
||||||
connection default;
|
connection default;
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
@ -1433,9 +1433,9 @@ GRANT SELECT( a ) ON v1 TO mysqluser1@localhost;
|
|||||||
GRANT UPDATE( b ) ON t2 TO mysqluser1@localhost;
|
GRANT UPDATE( b ) ON t2 TO mysqluser1@localhost;
|
||||||
connect connection1, localhost, mysqluser1, , test;
|
connect connection1, localhost, mysqluser1, , test;
|
||||||
SELECT * FROM mysqltest1.v1;
|
SELECT * FROM mysqltest1.v1;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table 'v1'
|
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table `mysqltest1`.`v1`
|
||||||
CREATE VIEW v1 AS SELECT * FROM mysqltest1.t2;
|
CREATE VIEW v1 AS SELECT * FROM mysqltest1.t2;
|
||||||
ERROR 42000: ANY command denied to user 'mysqluser1'@'localhost' for table 't2'
|
ERROR 42000: ANY command denied to user 'mysqluser1'@'localhost' for table `mysqltest1`.`t2`
|
||||||
disconnect connection1;
|
disconnect connection1;
|
||||||
connection default;
|
connection default;
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
@ -1458,9 +1458,9 @@ connection default;
|
|||||||
REVOKE SELECT ON mysqltest1.* FROM mysqluser1@localhost;
|
REVOKE SELECT ON mysqltest1.* FROM mysqluser1@localhost;
|
||||||
connection connection1;
|
connection connection1;
|
||||||
EXECUTE stmt_v1;
|
EXECUTE stmt_v1;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table 'v1'
|
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table `mysqltest1`.`v1`
|
||||||
EXECUTE stmt_v2;
|
EXECUTE stmt_v2;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table 'v2'
|
ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table `mysqltest1`.`v2`
|
||||||
disconnect connection1;
|
disconnect connection1;
|
||||||
connect connection2, localhost, mysqluser1,,;
|
connect connection2, localhost, mysqluser1,,;
|
||||||
PREPARE stmt FROM "SELECT a FROM v3";
|
PREPARE stmt FROM "SELECT a FROM v3";
|
||||||
@ -1620,11 +1620,11 @@ REVOKE SHOW VIEW ON v_f1 FROM mysqluser1@localhost;
|
|||||||
REVOKE SHOW VIEW ON v_v1 FROM mysqluser1@localhost;
|
REVOKE SHOW VIEW ON v_v1 FROM mysqluser1@localhost;
|
||||||
connection connection1;
|
connection connection1;
|
||||||
SHOW CREATE VIEW mysqltest1.v_t1;
|
SHOW CREATE VIEW mysqltest1.v_t1;
|
||||||
ERROR 42000: SHOW VIEW command denied to user 'mysqluser1'@'localhost' for table 'v_t1'
|
ERROR 42000: SHOW VIEW command denied to user 'mysqluser1'@'localhost' for table `mysqltest1`.`v_t1`
|
||||||
SHOW CREATE VIEW mysqltest1.v_f1;
|
SHOW CREATE VIEW mysqltest1.v_f1;
|
||||||
ERROR 42000: SHOW VIEW command denied to user 'mysqluser1'@'localhost' for table 'v_f1'
|
ERROR 42000: SHOW VIEW command denied to user 'mysqluser1'@'localhost' for table `mysqltest1`.`v_f1`
|
||||||
SHOW CREATE VIEW mysqltest1.v_v1;
|
SHOW CREATE VIEW mysqltest1.v_v1;
|
||||||
ERROR 42000: SHOW VIEW command denied to user 'mysqluser1'@'localhost' for table 'v_v1'
|
ERROR 42000: SHOW VIEW command denied to user 'mysqluser1'@'localhost' for table `mysqltest1`.`v_v1`
|
||||||
SHOW CREATE VIEW v_mysqluser1_t1;
|
SHOW CREATE VIEW v_mysqluser1_t1;
|
||||||
View Create View character_set_client collation_connection
|
View Create View character_set_client collation_connection
|
||||||
v_mysqluser1_t1 CREATE ALGORITHM=UNDEFINED DEFINER=`mysqluser1`@`localhost` SQL SECURITY DEFINER VIEW `v_mysqluser1_t1` AS select `mysqltest1`.`t1`.`a` AS `a` from `mysqltest1`.`t1` latin1 latin1_swedish_ci
|
v_mysqluser1_t1 CREATE ALGORITHM=UNDEFINED DEFINER=`mysqluser1`@`localhost` SQL SECURITY DEFINER VIEW `v_mysqluser1_t1` AS select `mysqltest1`.`t1`.`a` AS `a` from `mysqltest1`.`t1` latin1 latin1_swedish_ci
|
||||||
@ -1875,7 +1875,7 @@ update mysqltest2.t2 as t2, mysqltest1.v1_temp as v1 set t2.val= 'test4'
|
|||||||
# Temptable views can't be updated.
|
# Temptable views can't be updated.
|
||||||
update mysqltest2.t2 as t2, mysqltest1.v1_merge as v1 set v1.val= 'test5'
|
update mysqltest2.t2 as t2, mysqltest1.v1_merge as v1 set v1.val= 'test5'
|
||||||
where t2.id= v1.id;
|
where t2.id= v1.id;
|
||||||
ERROR 42000: UPDATE command denied to user 'user_11766767'@'localhost' for table 'v1_merge'
|
ERROR 42000: UPDATE command denied to user 'user_11766767'@'localhost' for table `mysqltest1`.`v1_merge`
|
||||||
update mysqltest1.t1 as t1, mysqltest2.v2_merge as v2 set v2.val= 'test6'
|
update mysqltest1.t1 as t1, mysqltest2.v2_merge as v2 set v2.val= 'test6'
|
||||||
where t1.id= v2.id;
|
where t1.id= v2.id;
|
||||||
#
|
#
|
||||||
@ -1899,7 +1899,7 @@ update mysqltest2.t2 as t2, mysqltest1.v11_temp as v11 set t2.val= 'test10'
|
|||||||
# on a view.
|
# on a view.
|
||||||
update mysqltest2.t2 as t2, mysqltest1.v11_merge as v11 set v11.val= 'test11'
|
update mysqltest2.t2 as t2, mysqltest1.v11_merge as v11 set v11.val= 'test11'
|
||||||
where t2.id= v11.id;
|
where t2.id= v11.id;
|
||||||
ERROR 42000: UPDATE command denied to user 'user_11766767'@'localhost' for table 'v11_merge'
|
ERROR 42000: UPDATE command denied to user 'user_11766767'@'localhost' for table `mysqltest1`.`v11_merge`
|
||||||
update mysqltest1.t1 as t1, mysqltest2.v21_merge as v21 set v21.val= 'test12'
|
update mysqltest1.t1 as t1, mysqltest2.v21_merge as v21 set v21.val= 'test12'
|
||||||
where t1.id= v21.id;
|
where t1.id= v21.id;
|
||||||
# As before, temptable views are not updateable.
|
# As before, temptable views are not updateable.
|
||||||
@ -1961,7 +1961,7 @@ CREATE VIEW foo.v AS SELECT * FROM JSON_TABLE('[1,2,3]', '$[*]' COLUMNS (num INT
|
|||||||
CREATE USER foo@localhost;
|
CREATE USER foo@localhost;
|
||||||
connect con1,localhost,foo,,;
|
connect con1,localhost,foo,,;
|
||||||
SELECT * FROM foo.v;
|
SELECT * FROM foo.v;
|
||||||
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table 'v'
|
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table `foo`.`v`
|
||||||
#
|
#
|
||||||
# Clean-up.
|
# Clean-up.
|
||||||
#
|
#
|
||||||
|
@ -145,7 +145,7 @@ INSERT INTO t2 VALUES (1, REPEAT("x", 1));
|
|||||||
BEGIN;
|
BEGIN;
|
||||||
INSERT INTO t2 VALUES (2, REPEAT("x", 4100));
|
INSERT INTO t2 VALUES (2, REPEAT("x", 4100));
|
||||||
INSERT INTO t1 VALUES (2, REPEAT("x", 4100));
|
INSERT INTO t1 VALUES (2, REPEAT("x", 4100));
|
||||||
SET DEBUG_SYNC= "commit_after_run_commit_ordered SIGNAL con1_ready WAIT_FOR signal_no_signal";
|
SET DEBUG_SYNC= "commit_after_run_commit_ordered SIGNAL con1_ready";
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection default;
|
connection default;
|
||||||
SET DEBUG_SYNC= "now WAIT_FOR con1_ready";
|
SET DEBUG_SYNC= "now WAIT_FOR con1_ready";
|
||||||
|
@ -47,7 +47,7 @@ CREATE TABLE t2 (a INT PRIMARY KEY, b MEDIUMTEXT) ENGINE=rocksdb;
|
|||||||
|
|
||||||
--let $case = "C"
|
--let $case = "C"
|
||||||
--let $description= "both engines have committed its transaction branch"
|
--let $description= "both engines have committed its transaction branch"
|
||||||
--let $debug_sync_action = "commit_after_run_commit_ordered SIGNAL con1_ready WAIT_FOR signal_no_signal"
|
--let $debug_sync_action = "commit_after_run_commit_ordered SIGNAL con1_ready"
|
||||||
# Hold off after both engines have committed. The server is shut down.
|
# Hold off after both engines have committed. The server is shut down.
|
||||||
--let $shutdown_timeout=
|
--let $shutdown_timeout=
|
||||||
--let $restart_parameters = --rpl-semi-sync-slave-enabled=1 --sync-binlog=1
|
--let $restart_parameters = --rpl-semi-sync-slave-enabled=1 --sync-binlog=1
|
||||||
|
@ -23,9 +23,9 @@ user1@localhost
|
|||||||
# Making sure that user1 does not have privileges to db1.t1
|
# Making sure that user1 does not have privileges to db1.t1
|
||||||
#
|
#
|
||||||
SHOW CREATE TABLE 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;
|
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
|
# Trigger: using %TYPE with a table we don't have access to
|
||||||
#
|
#
|
||||||
@ -43,7 +43,7 @@ END;
|
|||||||
END
|
END
|
||||||
$$
|
$$
|
||||||
INSERT INTO t1 (a) VALUES (10);
|
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;
|
SELECT * FROM t1;
|
||||||
a b
|
a b
|
||||||
10 20
|
10 20
|
||||||
@ -61,7 +61,7 @@ SELECT a;
|
|||||||
END;
|
END;
|
||||||
$$
|
$$
|
||||||
CALL p1;
|
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;
|
DROP PROCEDURE p1;
|
||||||
CREATE PROCEDURE p1()
|
CREATE PROCEDURE p1()
|
||||||
AS
|
AS
|
||||||
@ -71,7 +71,7 @@ SELECT a.a;
|
|||||||
END;
|
END;
|
||||||
$$
|
$$
|
||||||
CALL p1;
|
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;
|
DROP PROCEDURE p1;
|
||||||
#
|
#
|
||||||
# Stored procedure: Using %TYPE for with a table that we don't have access to
|
# Stored procedure: Using %TYPE for with a table that we don't have access to
|
||||||
@ -88,7 +88,7 @@ END;
|
|||||||
$$
|
$$
|
||||||
connection conn1;
|
connection conn1;
|
||||||
CALL p1;
|
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;
|
DROP PROCEDURE p1;
|
||||||
connection default;
|
connection default;
|
||||||
CREATE PROCEDURE p1()
|
CREATE PROCEDURE p1()
|
||||||
@ -101,7 +101,7 @@ END;
|
|||||||
$$
|
$$
|
||||||
connection conn1;
|
connection conn1;
|
||||||
CALL p1;
|
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;
|
DROP PROCEDURE p1;
|
||||||
#
|
#
|
||||||
# Stored procedure: Using %TYPE for with a table that we don't have access to
|
# Stored procedure: Using %TYPE for with a table that we don't have access to
|
||||||
@ -149,7 +149,7 @@ RETURN OCTET_LENGTH(a);
|
|||||||
END;
|
END;
|
||||||
$$
|
$$
|
||||||
SELECT f1();
|
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 FUNCTION f1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
@ -168,7 +168,7 @@ END;
|
|||||||
$$
|
$$
|
||||||
connection conn1;
|
connection conn1;
|
||||||
SELECT f1();
|
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 FUNCTION f1;
|
||||||
DROP TABLE t1;
|
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
|
# Making sure that user1 has access to db1.t1.a, but not to db1.t1.b
|
||||||
#
|
#
|
||||||
SHOW CREATE TABLE 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;
|
SHOW FIELDS IN db1.t1;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
a int(11) YES NULL
|
a int(11) YES NULL
|
||||||
|
@ -15,7 +15,6 @@ set global debug_key_management_version=10;
|
|||||||
select count(*) from information_schema.innodb_tablespaces_encryption where current_key_version <> 10;
|
select count(*) from information_schema.innodb_tablespaces_encryption where current_key_version <> 10;
|
||||||
count(*)
|
count(*)
|
||||||
0
|
0
|
||||||
SET GLOBAL debug_dbug = '+d,ib_log';
|
|
||||||
SET GLOBAL innodb_log_checkpoint_now = 1;
|
SET GLOBAL innodb_log_checkpoint_now = 1;
|
||||||
SET GLOBAL innodb_flush_log_at_trx_commit = 1;
|
SET GLOBAL innodb_flush_log_at_trx_commit = 1;
|
||||||
INSERT INTO t1 VALUES(NULL);
|
INSERT INTO t1 VALUES(NULL);
|
||||||
|
@ -25,7 +25,6 @@ let $wait_condition= select count(*) = $tables_count from information_schema.inn
|
|||||||
select count(*) from information_schema.innodb_tablespaces_encryption where current_key_version <> 10;
|
select count(*) from information_schema.innodb_tablespaces_encryption where current_key_version <> 10;
|
||||||
|
|
||||||
# Test redo log key rotation and crash recovery.
|
# Test redo log key rotation and crash recovery.
|
||||||
SET GLOBAL debug_dbug = '+d,ib_log';
|
|
||||||
SET GLOBAL innodb_log_checkpoint_now = 1;
|
SET GLOBAL innodb_log_checkpoint_now = 1;
|
||||||
SET GLOBAL innodb_flush_log_at_trx_commit = 1;
|
SET GLOBAL innodb_flush_log_at_trx_commit = 1;
|
||||||
INSERT INTO t1 VALUES(NULL);
|
INSERT INTO t1 VALUES(NULL);
|
||||||
|
@ -301,7 +301,7 @@ select * from t2;
|
|||||||
a
|
a
|
||||||
connection con1;
|
connection con1;
|
||||||
create trigger trg before insert on t1 for each row set new.a= 10;
|
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;
|
connection master;
|
||||||
delete from t1;
|
delete from t1;
|
||||||
create trigger trg before insert on t1 for each row set new.a= 10;
|
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
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp5_s_i();
|
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_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();
|
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;
|
connection default;
|
||||||
|
|
||||||
root@localhost db_storedproc_1
|
root@localhost db_storedproc_1
|
||||||
CALL sp5_sel();
|
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';
|
grant insert on db_storedproc_1.* to 'user_1'@'localhost';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
connection user5_2;
|
connection user5_2;
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp5_s_i();
|
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_ins();
|
||||||
CALL sp5_sel();
|
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;
|
connection default;
|
||||||
|
|
||||||
root@localhost db_storedproc_1
|
root@localhost db_storedproc_1
|
||||||
CALL sp5_sel();
|
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';
|
grant SELECT on db_storedproc_1.* to 'user_1'@'localhost';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
connection user5_2;
|
connection user5_2;
|
||||||
@ -276,9 +276,9 @@ inserted outside of SP NULL
|
|||||||
inserted from sp5_ins 2000-10-00
|
inserted from sp5_ins 2000-10-00
|
||||||
inserted from sp5_s_i 2000-10-00
|
inserted from sp5_s_i 2000-10-00
|
||||||
inserted from sp5_ins 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();
|
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();
|
CALL sp5_sel();
|
||||||
c1 c2 c3
|
c1 c2 c3
|
||||||
inserted outside of SP NULL
|
inserted outside of SP NULL
|
||||||
@ -294,11 +294,11 @@ connection user5_2;
|
|||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp5_s_i();
|
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_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();
|
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;
|
disconnect user5_2;
|
||||||
connection default;
|
connection default;
|
||||||
|
|
||||||
@ -348,9 +348,9 @@ user_2@localhost db_storedproc_1
|
|||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
c1
|
c1
|
||||||
inserted outside SP
|
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();
|
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();
|
CALL sp3166_sel();
|
||||||
c1
|
c1
|
||||||
inserted outside SP
|
inserted outside SP
|
||||||
@ -390,10 +390,10 @@ connect user6_4, localhost, user_2, , db_storedproc_1;
|
|||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp3166_s_i();
|
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_ins();
|
||||||
CALL sp3166_sel();
|
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;
|
disconnect user6_4;
|
||||||
connection default;
|
connection default;
|
||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
|
@ -99,7 +99,7 @@ test_noprivs@localhost
|
|||||||
use priv_db;
|
use priv_db;
|
||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 3.5.3.2_1-no';
|
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;
|
connection default;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values ('insert 3.5.3.2-no');
|
insert into t1 (f1) values ('insert 3.5.3.2-no');
|
||||||
@ -135,7 +135,7 @@ Testcase 3.5.3.6:
|
|||||||
connection no_privs;
|
connection no_privs;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
drop trigger trg1_2;
|
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;
|
connection default;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values ('insert 3.5.3.6-yes');
|
insert into t1 (f1) values ('insert 3.5.3.6-yes');
|
||||||
@ -688,7 +688,7 @@ insert into t2 values (new.f1);
|
|||||||
connection default;
|
connection default;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values (4);
|
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;
|
revoke SELECT on priv_db.t2 from test_yesprivs@localhost;
|
||||||
grant INSERT on priv_db.t2 to test_yesprivs@localhost;
|
grant INSERT on priv_db.t2 to test_yesprivs@localhost;
|
||||||
insert into t1 (f1) values (4);
|
insert into t1 (f1) values (4);
|
||||||
@ -706,7 +706,7 @@ update t2 set f2=new.f1-1;
|
|||||||
connection default;
|
connection default;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values (2);
|
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;
|
revoke INSERT on priv_db.t2 from test_yesprivs@localhost;
|
||||||
grant UPDATE on priv_db.t2 to test_yesprivs@localhost;
|
grant UPDATE on priv_db.t2 to test_yesprivs@localhost;
|
||||||
insert into t1 (f1) values (2);
|
insert into t1 (f1) values (2);
|
||||||
@ -725,7 +725,7 @@ select f2 into @aaa from t2 where f2=new.f1;
|
|||||||
connection default;
|
connection default;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values (1);
|
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;
|
revoke UPDATE on priv_db.t2 from test_yesprivs@localhost;
|
||||||
grant SELECT on priv_db.t2 to test_yesprivs@localhost;
|
grant SELECT on priv_db.t2 to test_yesprivs@localhost;
|
||||||
insert into t1 (f1) values (1);
|
insert into t1 (f1) values (1);
|
||||||
@ -748,7 +748,7 @@ delete from t2;
|
|||||||
connection default;
|
connection default;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values (1);
|
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;
|
revoke SELECT on priv_db.t2 from test_yesprivs@localhost;
|
||||||
grant DELETE on priv_db.t2 to test_yesprivs@localhost;
|
grant DELETE on priv_db.t2 to test_yesprivs@localhost;
|
||||||
insert into t1 (f1) values (1);
|
insert into t1 (f1) values (1);
|
||||||
|
@ -31,7 +31,7 @@ no trigger privilege on db level for create:
|
|||||||
use priv_db;
|
use priv_db;
|
||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_1-no';
|
set new.f1 = 'trig 1_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
connect no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK;
|
connect no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values ('insert-yes');
|
insert into t1 (f1) values ('insert-yes');
|
||||||
@ -107,7 +107,7 @@ current_user
|
|||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
use priv_db;
|
use priv_db;
|
||||||
drop trigger trg1_2;
|
drop trigger trg1_2;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
connection no_privs;
|
connection no_privs;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -117,7 +117,7 @@ use priv_db;
|
|||||||
no trigger privilege at activation time:
|
no trigger privilege at activation time:
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
insert into t1 (f1) values ('insert-yes');
|
insert into t1 (f1) values ('insert-yes');
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
insert-yes
|
insert-yes
|
||||||
@ -155,7 +155,7 @@ Grants for test_yesprivs@localhost
|
|||||||
GRANT USAGE ON *.* TO `test_yesprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT USAGE ON *.* TO `test_yesprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT, UPDATE, TRIGGER ON `priv_db`.* TO `test_yesprivs`@`localhost`
|
GRANT SELECT, UPDATE, TRIGGER ON `priv_db`.* TO `test_yesprivs`@`localhost`
|
||||||
drop trigger trg1_2;
|
drop trigger trg1_2;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
|
|
||||||
takes effect after use priv_db:
|
takes effect after use priv_db:
|
||||||
-------------------------------
|
-------------------------------
|
||||||
@ -195,14 +195,14 @@ test_yesprivs@localhost
|
|||||||
use no_priv_db;
|
use no_priv_db;
|
||||||
create trigger trg1_3 before INSERT on t1 for each row
|
create trigger trg1_3 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_3-no';
|
set new.f1 = 'trig 1_3-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `no_priv_db`.`t1`
|
||||||
use priv_db;
|
use priv_db;
|
||||||
create trigger trg1_3 before INSERT on t1 for each row
|
create trigger trg1_3 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_3-yes';
|
set new.f1 = 'trig 1_3-yes';
|
||||||
use no_priv_db;
|
use no_priv_db;
|
||||||
create trigger trg1_4 before UPDATE on t1 for each row
|
create trigger trg1_4 before UPDATE on t1 for each row
|
||||||
set new.f1 = 'trig 1_4-no';
|
set new.f1 = 'trig 1_4-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `no_priv_db`.`t1`
|
||||||
use priv_db;
|
use priv_db;
|
||||||
create trigger trg1_4 before UPDATE on t1 for each row
|
create trigger trg1_4 before UPDATE on t1 for each row
|
||||||
set new.f1 = 'trig 1_4-yes';
|
set new.f1 = 'trig 1_4-yes';
|
||||||
@ -302,7 +302,7 @@ Tables_in_priv_db
|
|||||||
t1
|
t1
|
||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_1-no';
|
set new.f1 = 'trig 1_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
connection no_privs;
|
connection no_privs;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -376,7 +376,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
drop trigger trg1_2;
|
drop trigger trg1_2;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
|
|
||||||
no trigger privilege at activation time:
|
no trigger privilege at activation time:
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
@ -385,7 +385,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_noprivs@localhost
|
test_noprivs@localhost
|
||||||
insert into t1 (f1) values ('insert5-no');
|
insert into t1 (f1) values ('insert5-no');
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
insert1-yes
|
insert1-yes
|
||||||
@ -476,12 +476,12 @@ current_user
|
|||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
create trigger trg2_1 before INSERT on t2 for each row
|
create trigger trg2_1 before INSERT on t2 for each row
|
||||||
set new.f1 = 'trig 2_1-no';
|
set new.f1 = 'trig 2_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
|
||||||
create trigger trg1_3 before INSERT on t1 for each row
|
create trigger trg1_3 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_3-yes';
|
set new.f1 = 'trig 1_3-yes';
|
||||||
create trigger trg2_2 before UPDATE on t2 for each row
|
create trigger trg2_2 before UPDATE on t2 for each row
|
||||||
set new.f1 = 'trig 2_2-no';
|
set new.f1 = 'trig 2_2-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
|
||||||
create trigger trg1_4 before UPDATE on t1 for each row
|
create trigger trg1_4 before UPDATE on t1 for each row
|
||||||
set new.f1 = 'trig 1_4-yes';
|
set new.f1 = 'trig 1_4-yes';
|
||||||
show triggers;
|
show triggers;
|
||||||
@ -615,7 +615,7 @@ Trigger Event Table Statement Timing Created sql_mode Definer character_set_clie
|
|||||||
select * from information_schema.triggers;
|
select * from information_schema.triggers;
|
||||||
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
|
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
|
||||||
drop trigger trg1_1;
|
drop trigger trg1_1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
connection default;
|
connection default;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -635,7 +635,7 @@ current_user
|
|||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_1-no';
|
set new.f1 = 'trig 1_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
connection no_privs;
|
connection no_privs;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -671,11 +671,11 @@ set new.f1 = 'trig 1_2-yes';
|
|||||||
create trigger no_priv_db.trg1_9 before insert on no_priv_db.t1
|
create trigger no_priv_db.trg1_9 before insert on no_priv_db.t1
|
||||||
for each row
|
for each row
|
||||||
set new.f1 = 'trig 1_9-yes';
|
set new.f1 = 'trig 1_9-yes';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `no_priv_db`.`t1`
|
||||||
use no_priv_db;
|
use no_priv_db;
|
||||||
create trigger trg1_2 before INSERT on t1 for each row
|
create trigger trg1_2 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_2-no';
|
set new.f1 = 'trig 1_2-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `no_priv_db`.`t1`
|
||||||
create trigger priv_db.trg1_9 before UPDATE on priv_db.t1
|
create trigger priv_db.trg1_9 before UPDATE on priv_db.t1
|
||||||
for each row
|
for each row
|
||||||
set new.f1 = 'trig 1_9-yes';
|
set new.f1 = 'trig 1_9-yes';
|
||||||
@ -699,7 +699,7 @@ select f1 from t1 order by f1;
|
|||||||
f1
|
f1
|
||||||
insert-yes
|
insert-yes
|
||||||
drop trigger priv_db.trg1_9;
|
drop trigger priv_db.trg1_9;
|
||||||
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;
|
connection default;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -708,7 +708,7 @@ drop trigger priv_db.trg1_9;
|
|||||||
revoke TRIGGER on priv_db.* from test_yesprivs@localhost;
|
revoke TRIGGER on priv_db.* from test_yesprivs@localhost;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values ('insert-yes');
|
insert into t1 (f1) values ('insert-yes');
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
insert-yes
|
insert-yes
|
||||||
@ -728,7 +728,7 @@ test_yesprivs@localhost
|
|||||||
use no_priv_db;
|
use no_priv_db;
|
||||||
create trigger trg1_2 before INSERT on t1 for each row
|
create trigger trg1_2 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_2-no';
|
set new.f1 = 'trig 1_2-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `no_priv_db`.`t1`
|
||||||
connection no_privs;
|
connection no_privs;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -843,7 +843,7 @@ set new.f1 = 'trig 2_1-yes';
|
|||||||
use priv2_db;
|
use priv2_db;
|
||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig1_1-yes';
|
set new.f1 = 'trig1_1-yes';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv2_db`.`t1`
|
||||||
connection no_privs;
|
connection no_privs;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -918,7 +918,7 @@ test_yesprivs@localhost
|
|||||||
use priv1_db;
|
use priv1_db;
|
||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_1-no';
|
set new.f1 = 'trig 1_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv1_db`.`t1`
|
||||||
connection default;
|
connection default;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -945,7 +945,7 @@ create trigger trg1_2 before INSERT on t1 for each row
|
|||||||
set new.f1 = 'trig 1_2-yes';
|
set new.f1 = 'trig 1_2-yes';
|
||||||
create trigger trg2_1 before INSERT on t2 for each row
|
create trigger trg2_1 before INSERT on t2 for each row
|
||||||
set new.f1 = 'trig 2_1-no';
|
set new.f1 = 'trig 2_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv1_db`.`t2`
|
||||||
connection no_privs;
|
connection no_privs;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -986,7 +986,7 @@ current_user
|
|||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
create trigger trg2_1 before INSERT on t2 for each row
|
create trigger trg2_1 before INSERT on t2 for each row
|
||||||
set new.f1 = 'trig 2_1-yes';
|
set new.f1 = 'trig 2_1-yes';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv1_db`.`t2`
|
||||||
use priv1_db;
|
use priv1_db;
|
||||||
create trigger trg2_1 before INSERT on t2 for each row
|
create trigger trg2_1 before INSERT on t2 for each row
|
||||||
set new.f1 = 'trig 2_1-yes';
|
set new.f1 = 'trig 2_1-yes';
|
||||||
@ -1110,7 +1110,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
execute ins1;
|
execute ins1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1122,7 +1122,7 @@ current_user
|
|||||||
test_useprivs@localhost
|
test_useprivs@localhost
|
||||||
prepare ins1 from 'insert into t1 (f1) values (''insert5-no'')';
|
prepare ins1 from 'insert into t1 (f1) values (''insert5-no'')';
|
||||||
execute ins1;
|
execute ins1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1173,7 +1173,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
execute ins1;
|
execute ins1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1185,7 +1185,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_useprivs@localhost
|
test_useprivs@localhost
|
||||||
execute ins1;
|
execute ins1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1240,7 +1240,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
execute ins1;
|
execute ins1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1255,7 +1255,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_useprivs@localhost
|
test_useprivs@localhost
|
||||||
execute ins1;
|
execute ins1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1323,11 +1323,11 @@ current_user
|
|||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values ('insert-no');
|
insert into t1 (f1) values ('insert-no');
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
drop trigger trg1_0;
|
drop trigger trg1_0;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
connection default;
|
connection default;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -1638,12 +1638,12 @@ update t1 set f1 = 'update6_no'
|
|||||||
where f1 like '%insert%';
|
where f1 like '%insert%';
|
||||||
update t2 set f1 = 'update6_no'
|
update t2 set f1 = 'update6_no'
|
||||||
where f1 like '%insert%';
|
where f1 like '%insert%';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
|
||||||
update t1 set f1 = 'update7_no'
|
update t1 set f1 = 'update7_no'
|
||||||
where f1 like '%insert%';
|
where f1 like '%insert%';
|
||||||
update t2 set f1 = 'update7_no'
|
update t2 set f1 = 'update7_no'
|
||||||
where f1 like '%insert%';
|
where f1 like '%insert%';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1669,7 +1669,7 @@ test_noprivs@localhost
|
|||||||
update t1 set f1 = 'update8-no',
|
update t1 set f1 = 'update8-no',
|
||||||
f2 = 'update8-no'
|
f2 = 'update8-no'
|
||||||
where f2 like '%yes';
|
where f2 like '%yes';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select * from t1 order by f1,f2,f3;
|
select * from t1 order by f1,f2,f3;
|
||||||
f1 f2 f3
|
f1 f2 f3
|
||||||
trig 1_1-yes NULL NULL
|
trig 1_1-yes NULL NULL
|
||||||
@ -1743,7 +1743,7 @@ current_user
|
|||||||
test_noprivs@localhost
|
test_noprivs@localhost
|
||||||
use priv_db;
|
use priv_db;
|
||||||
update t1 set f3= f3+1;
|
update t1 set f3= f3+1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f3 from t1 order by f3;
|
select f3 from t1 order by f3;
|
||||||
f3
|
f3
|
||||||
NULL
|
NULL
|
||||||
|
@ -170,7 +170,7 @@ Field Type Null Key Default Extra
|
|||||||
f1 char(10) YES MUL NULL
|
f1 char(10) YES MUL NULL
|
||||||
f2 text YES NULL
|
f2 text YES NULL
|
||||||
SHOW COLUMNS FROM db_datadict.t2;
|
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;
|
SHOW COLUMNS FROM db_datadict.v1;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
f2 int(1) NO 0
|
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 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
|
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;
|
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;
|
SHOW COLUMNS FROM db_datadict.t2;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
f1 char(10) NO PRI NULL
|
f1 char(10) NO PRI NULL
|
||||||
f2 text YES NULL
|
f2 text YES NULL
|
||||||
SHOW COLUMNS FROM db_datadict.v1;
|
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;
|
connection default;
|
||||||
disconnect testuser1;
|
disconnect testuser1;
|
||||||
disconnect testuser2;
|
disconnect testuser2;
|
||||||
|
@ -151,7 +151,7 @@ t1 0 my_idx1 1 f6 ### ### ### ### ### ### ### NO
|
|||||||
t1 0 my_idx1 2 f1 ### ### ### ### ### ### ### NO
|
t1 0 my_idx1 2 f1 ### ### ### ### ### ### ### NO
|
||||||
t1 0 my_idx2 1 f3 ### ### ### ### ### ### ### NO
|
t1 0 my_idx2 1 f3 ### ### ### ### ### ### ### NO
|
||||||
SHOW INDEXES FROM db_datadict.t2;
|
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;
|
connection default;
|
||||||
disconnect testuser1;
|
disconnect testuser1;
|
||||||
DROP USER 'testuser1'@'localhost';
|
DROP USER 'testuser1'@'localhost';
|
||||||
|
@ -172,9 +172,9 @@ Grants for testuser4@localhost
|
|||||||
GRANT TRIGGER ON *.* TO `testuser4`@`localhost`
|
GRANT TRIGGER ON *.* TO `testuser4`@`localhost`
|
||||||
# TRIGGER Privilege + no SELECT Privilege on t1 --> result for query
|
# TRIGGER Privilege + no SELECT Privilege on t1 --> result for query
|
||||||
SELECT * FROM db_datadict.t1;
|
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;
|
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
|
SELECT * FROM information_schema.triggers
|
||||||
WHERE trigger_name = 'trg1';
|
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
|
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
|
IS_GRANTABLE NO
|
||||||
SELECT host,user,json_detailed(priv) FROM mysql.global_priv
|
SELECT host,user,json_detailed(priv) FROM mysql.global_priv
|
||||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
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;
|
SHOW GRANTS;
|
||||||
Grants for testuser2@localhost
|
Grants for testuser2@localhost
|
||||||
GRANT INSERT, UPDATE ON *.* TO `testuser2`@`localhost`
|
GRANT INSERT, UPDATE ON *.* TO `testuser2`@`localhost`
|
||||||
@ -381,7 +381,7 @@ PRIVILEGE_TYPE USAGE
|
|||||||
IS_GRANTABLE NO
|
IS_GRANTABLE NO
|
||||||
SELECT host,user,json_detailed(priv) FROM mysql.global_priv
|
SELECT host,user,json_detailed(priv) FROM mysql.global_priv
|
||||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
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;
|
SHOW GRANTS;
|
||||||
Grants for testuser3@localhost
|
Grants for testuser3@localhost
|
||||||
GRANT USAGE ON *.* TO `testuser3`@`localhost`
|
GRANT USAGE ON *.* TO `testuser3`@`localhost`
|
||||||
@ -447,12 +447,12 @@ PRIVILEGE_TYPE USAGE
|
|||||||
IS_GRANTABLE NO
|
IS_GRANTABLE NO
|
||||||
SELECT host,user,json_detailed(priv) FROM mysql.global_priv
|
SELECT host,user,json_detailed(priv) FROM mysql.global_priv
|
||||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
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;
|
SHOW GRANTS;
|
||||||
Grants for testuser1@localhost
|
Grants for testuser1@localhost
|
||||||
GRANT USAGE ON *.* TO `testuser1`@`localhost`
|
GRANT USAGE ON *.* TO `testuser1`@`localhost`
|
||||||
CREATE TABLE db_datadict.tb_55 ( c1 TEXT );
|
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
|
SELECT * FROM information_schema.user_privileges
|
||||||
WHERE grantee LIKE '''testuser%'''
|
WHERE grantee LIKE '''testuser%'''
|
||||||
ORDER BY grantee, table_catalog, privilege_type;
|
ORDER BY grantee, table_catalog, privilege_type;
|
||||||
@ -462,12 +462,12 @@ PRIVILEGE_TYPE USAGE
|
|||||||
IS_GRANTABLE NO
|
IS_GRANTABLE NO
|
||||||
SELECT host,user,json_detailed(priv) FROM mysql.global_priv
|
SELECT host,user,json_detailed(priv) FROM mysql.global_priv
|
||||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
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;
|
SHOW GRANTS;
|
||||||
Grants for testuser1@localhost
|
Grants for testuser1@localhost
|
||||||
GRANT USAGE ON *.* TO `testuser1`@`localhost`
|
GRANT USAGE ON *.* TO `testuser1`@`localhost`
|
||||||
CREATE TABLE db_datadict.tb_66 ( c1 TEXT );
|
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;
|
# Add ALL on db_datadict.* (and select on mysql.global_priv) to testuser1;
|
||||||
connection default;
|
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 ALL PRIVILEGES ON `db_datadict`.* TO `testuser1`@`localhost` WITH GRANT OPTION
|
||||||
GRANT SELECT ON `mysql`.`global_priv` TO `testuser1`@`localhost`
|
GRANT SELECT ON `mysql`.`global_priv` TO `testuser1`@`localhost`
|
||||||
CREATE TABLE db_datadict.tb_56 ( c1 TEXT );
|
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;
|
USE db_datadict;
|
||||||
SELECT * FROM information_schema.user_privileges
|
SELECT * FROM information_schema.user_privileges
|
||||||
WHERE grantee LIKE '''testuser%'''
|
WHERE grantee LIKE '''testuser%'''
|
||||||
@ -671,7 +671,7 @@ PRIVILEGE_TYPE USAGE
|
|||||||
IS_GRANTABLE NO
|
IS_GRANTABLE NO
|
||||||
SELECT host,user,json_detailed(priv) FROM mysql.global_priv
|
SELECT host,user,json_detailed(priv) FROM mysql.global_priv
|
||||||
WHERE user LIKE 'testuser%' ORDER BY host, user;
|
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;
|
SHOW GRANTS;
|
||||||
Grants for testuser1@localhost
|
Grants for testuser1@localhost
|
||||||
GRANT USAGE ON *.* TO `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
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp5_s_i();
|
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_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();
|
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;
|
connection default;
|
||||||
|
|
||||||
root@localhost db_storedproc_1
|
root@localhost db_storedproc_1
|
||||||
CALL sp5_sel();
|
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';
|
grant insert on db_storedproc_1.* to 'user_1'@'localhost';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
connection user5_2;
|
connection user5_2;
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp5_s_i();
|
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_ins();
|
||||||
CALL sp5_sel();
|
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;
|
connection default;
|
||||||
|
|
||||||
root@localhost db_storedproc_1
|
root@localhost db_storedproc_1
|
||||||
CALL sp5_sel();
|
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';
|
grant SELECT on db_storedproc_1.* to 'user_1'@'localhost';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
connection user5_2;
|
connection user5_2;
|
||||||
@ -276,9 +276,9 @@ inserted outside of SP NULL
|
|||||||
inserted from sp5_ins 2000-10-00
|
inserted from sp5_ins 2000-10-00
|
||||||
inserted from sp5_s_i 2000-10-00
|
inserted from sp5_s_i 2000-10-00
|
||||||
inserted from sp5_ins 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();
|
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();
|
CALL sp5_sel();
|
||||||
c1 c2 c3
|
c1 c2 c3
|
||||||
inserted outside of SP NULL
|
inserted outside of SP NULL
|
||||||
@ -294,11 +294,11 @@ connection user5_2;
|
|||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp5_s_i();
|
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_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();
|
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;
|
disconnect user5_2;
|
||||||
connection default;
|
connection default;
|
||||||
|
|
||||||
@ -348,9 +348,9 @@ user_2@localhost db_storedproc_1
|
|||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
c1
|
c1
|
||||||
inserted outside SP
|
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();
|
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();
|
CALL sp3166_sel();
|
||||||
c1
|
c1
|
||||||
inserted outside SP
|
inserted outside SP
|
||||||
@ -390,10 +390,10 @@ connect user6_4, localhost, user_2, , db_storedproc_1;
|
|||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp3166_s_i();
|
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_ins();
|
||||||
CALL sp3166_sel();
|
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;
|
disconnect user6_4;
|
||||||
connection default;
|
connection default;
|
||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
|
@ -99,7 +99,7 @@ test_noprivs@localhost
|
|||||||
use priv_db;
|
use priv_db;
|
||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 3.5.3.2_1-no';
|
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;
|
connection default;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values ('insert 3.5.3.2-no');
|
insert into t1 (f1) values ('insert 3.5.3.2-no');
|
||||||
@ -135,7 +135,7 @@ Testcase 3.5.3.6:
|
|||||||
connection no_privs;
|
connection no_privs;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
drop trigger trg1_2;
|
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;
|
connection default;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values ('insert 3.5.3.6-yes');
|
insert into t1 (f1) values ('insert 3.5.3.6-yes');
|
||||||
@ -688,7 +688,7 @@ insert into t2 values (new.f1);
|
|||||||
connection default;
|
connection default;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values (4);
|
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;
|
revoke SELECT on priv_db.t2 from test_yesprivs@localhost;
|
||||||
grant INSERT on priv_db.t2 to test_yesprivs@localhost;
|
grant INSERT on priv_db.t2 to test_yesprivs@localhost;
|
||||||
insert into t1 (f1) values (4);
|
insert into t1 (f1) values (4);
|
||||||
@ -706,7 +706,7 @@ update t2 set f2=new.f1-1;
|
|||||||
connection default;
|
connection default;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values (2);
|
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;
|
revoke INSERT on priv_db.t2 from test_yesprivs@localhost;
|
||||||
grant UPDATE on priv_db.t2 to test_yesprivs@localhost;
|
grant UPDATE on priv_db.t2 to test_yesprivs@localhost;
|
||||||
insert into t1 (f1) values (2);
|
insert into t1 (f1) values (2);
|
||||||
@ -725,7 +725,7 @@ select f2 into @aaa from t2 where f2=new.f1;
|
|||||||
connection default;
|
connection default;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values (1);
|
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;
|
revoke UPDATE on priv_db.t2 from test_yesprivs@localhost;
|
||||||
grant SELECT on priv_db.t2 to test_yesprivs@localhost;
|
grant SELECT on priv_db.t2 to test_yesprivs@localhost;
|
||||||
insert into t1 (f1) values (1);
|
insert into t1 (f1) values (1);
|
||||||
@ -748,7 +748,7 @@ delete from t2;
|
|||||||
connection default;
|
connection default;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values (1);
|
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;
|
revoke SELECT on priv_db.t2 from test_yesprivs@localhost;
|
||||||
grant DELETE on priv_db.t2 to test_yesprivs@localhost;
|
grant DELETE on priv_db.t2 to test_yesprivs@localhost;
|
||||||
insert into t1 (f1) values (1);
|
insert into t1 (f1) values (1);
|
||||||
|
@ -32,7 +32,7 @@ no trigger privilege on db level for create:
|
|||||||
use priv_db;
|
use priv_db;
|
||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_1-no';
|
set new.f1 = 'trig 1_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
connect no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK;
|
connect no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values ('insert-yes');
|
insert into t1 (f1) values ('insert-yes');
|
||||||
@ -108,7 +108,7 @@ current_user
|
|||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
use priv_db;
|
use priv_db;
|
||||||
drop trigger trg1_2;
|
drop trigger trg1_2;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
connection no_privs;
|
connection no_privs;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -118,7 +118,7 @@ use priv_db;
|
|||||||
no trigger privilege at activation time:
|
no trigger privilege at activation time:
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
insert into t1 (f1) values ('insert-yes');
|
insert into t1 (f1) values ('insert-yes');
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
insert-yes
|
insert-yes
|
||||||
@ -156,7 +156,7 @@ Grants for test_yesprivs@localhost
|
|||||||
GRANT USAGE ON *.* TO `test_yesprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT USAGE ON *.* TO `test_yesprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT, UPDATE, TRIGGER ON `priv_db`.* TO `test_yesprivs`@`localhost`
|
GRANT SELECT, UPDATE, TRIGGER ON `priv_db`.* TO `test_yesprivs`@`localhost`
|
||||||
drop trigger trg1_2;
|
drop trigger trg1_2;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
|
|
||||||
takes effect after use priv_db:
|
takes effect after use priv_db:
|
||||||
-------------------------------
|
-------------------------------
|
||||||
@ -196,14 +196,14 @@ test_yesprivs@localhost
|
|||||||
use no_priv_db;
|
use no_priv_db;
|
||||||
create trigger trg1_3 before INSERT on t1 for each row
|
create trigger trg1_3 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_3-no';
|
set new.f1 = 'trig 1_3-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `no_priv_db`.`t1`
|
||||||
use priv_db;
|
use priv_db;
|
||||||
create trigger trg1_3 before INSERT on t1 for each row
|
create trigger trg1_3 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_3-yes';
|
set new.f1 = 'trig 1_3-yes';
|
||||||
use no_priv_db;
|
use no_priv_db;
|
||||||
create trigger trg1_4 before UPDATE on t1 for each row
|
create trigger trg1_4 before UPDATE on t1 for each row
|
||||||
set new.f1 = 'trig 1_4-no';
|
set new.f1 = 'trig 1_4-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `no_priv_db`.`t1`
|
||||||
use priv_db;
|
use priv_db;
|
||||||
create trigger trg1_4 before UPDATE on t1 for each row
|
create trigger trg1_4 before UPDATE on t1 for each row
|
||||||
set new.f1 = 'trig 1_4-yes';
|
set new.f1 = 'trig 1_4-yes';
|
||||||
@ -303,7 +303,7 @@ Tables_in_priv_db
|
|||||||
t1
|
t1
|
||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_1-no';
|
set new.f1 = 'trig 1_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
connection no_privs;
|
connection no_privs;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -377,7 +377,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
drop trigger trg1_2;
|
drop trigger trg1_2;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
|
|
||||||
no trigger privilege at activation time:
|
no trigger privilege at activation time:
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
@ -386,7 +386,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_noprivs@localhost
|
test_noprivs@localhost
|
||||||
insert into t1 (f1) values ('insert5-no');
|
insert into t1 (f1) values ('insert5-no');
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
insert1-yes
|
insert1-yes
|
||||||
@ -477,12 +477,12 @@ current_user
|
|||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
create trigger trg2_1 before INSERT on t2 for each row
|
create trigger trg2_1 before INSERT on t2 for each row
|
||||||
set new.f1 = 'trig 2_1-no';
|
set new.f1 = 'trig 2_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
|
||||||
create trigger trg1_3 before INSERT on t1 for each row
|
create trigger trg1_3 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_3-yes';
|
set new.f1 = 'trig 1_3-yes';
|
||||||
create trigger trg2_2 before UPDATE on t2 for each row
|
create trigger trg2_2 before UPDATE on t2 for each row
|
||||||
set new.f1 = 'trig 2_2-no';
|
set new.f1 = 'trig 2_2-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
|
||||||
create trigger trg1_4 before UPDATE on t1 for each row
|
create trigger trg1_4 before UPDATE on t1 for each row
|
||||||
set new.f1 = 'trig 1_4-yes';
|
set new.f1 = 'trig 1_4-yes';
|
||||||
show triggers;
|
show triggers;
|
||||||
@ -616,7 +616,7 @@ Trigger Event Table Statement Timing Created sql_mode Definer character_set_clie
|
|||||||
select * from information_schema.triggers;
|
select * from information_schema.triggers;
|
||||||
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
|
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
|
||||||
drop trigger trg1_1;
|
drop trigger trg1_1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
connection default;
|
connection default;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -636,7 +636,7 @@ current_user
|
|||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_1-no';
|
set new.f1 = 'trig 1_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
connection no_privs;
|
connection no_privs;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -672,11 +672,11 @@ set new.f1 = 'trig 1_2-yes';
|
|||||||
create trigger no_priv_db.trg1_9 before insert on no_priv_db.t1
|
create trigger no_priv_db.trg1_9 before insert on no_priv_db.t1
|
||||||
for each row
|
for each row
|
||||||
set new.f1 = 'trig 1_9-yes';
|
set new.f1 = 'trig 1_9-yes';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `no_priv_db`.`t1`
|
||||||
use no_priv_db;
|
use no_priv_db;
|
||||||
create trigger trg1_2 before INSERT on t1 for each row
|
create trigger trg1_2 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_2-no';
|
set new.f1 = 'trig 1_2-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `no_priv_db`.`t1`
|
||||||
create trigger priv_db.trg1_9 before UPDATE on priv_db.t1
|
create trigger priv_db.trg1_9 before UPDATE on priv_db.t1
|
||||||
for each row
|
for each row
|
||||||
set new.f1 = 'trig 1_9-yes';
|
set new.f1 = 'trig 1_9-yes';
|
||||||
@ -700,7 +700,7 @@ select f1 from t1 order by f1;
|
|||||||
f1
|
f1
|
||||||
insert-yes
|
insert-yes
|
||||||
drop trigger priv_db.trg1_9;
|
drop trigger priv_db.trg1_9;
|
||||||
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;
|
connection default;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -709,7 +709,7 @@ drop trigger priv_db.trg1_9;
|
|||||||
revoke TRIGGER on priv_db.* from test_yesprivs@localhost;
|
revoke TRIGGER on priv_db.* from test_yesprivs@localhost;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values ('insert-yes');
|
insert into t1 (f1) values ('insert-yes');
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
insert-yes
|
insert-yes
|
||||||
@ -729,7 +729,7 @@ test_yesprivs@localhost
|
|||||||
use no_priv_db;
|
use no_priv_db;
|
||||||
create trigger trg1_2 before INSERT on t1 for each row
|
create trigger trg1_2 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_2-no';
|
set new.f1 = 'trig 1_2-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `no_priv_db`.`t1`
|
||||||
connection no_privs;
|
connection no_privs;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -844,7 +844,7 @@ set new.f1 = 'trig 2_1-yes';
|
|||||||
use priv2_db;
|
use priv2_db;
|
||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig1_1-yes';
|
set new.f1 = 'trig1_1-yes';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv2_db`.`t1`
|
||||||
connection no_privs;
|
connection no_privs;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -919,7 +919,7 @@ test_yesprivs@localhost
|
|||||||
use priv1_db;
|
use priv1_db;
|
||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_1-no';
|
set new.f1 = 'trig 1_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv1_db`.`t1`
|
||||||
connection default;
|
connection default;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -946,7 +946,7 @@ create trigger trg1_2 before INSERT on t1 for each row
|
|||||||
set new.f1 = 'trig 1_2-yes';
|
set new.f1 = 'trig 1_2-yes';
|
||||||
create trigger trg2_1 before INSERT on t2 for each row
|
create trigger trg2_1 before INSERT on t2 for each row
|
||||||
set new.f1 = 'trig 2_1-no';
|
set new.f1 = 'trig 2_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv1_db`.`t2`
|
||||||
connection no_privs;
|
connection no_privs;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -987,7 +987,7 @@ current_user
|
|||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
create trigger trg2_1 before INSERT on t2 for each row
|
create trigger trg2_1 before INSERT on t2 for each row
|
||||||
set new.f1 = 'trig 2_1-yes';
|
set new.f1 = 'trig 2_1-yes';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv1_db`.`t2`
|
||||||
use priv1_db;
|
use priv1_db;
|
||||||
create trigger trg2_1 before INSERT on t2 for each row
|
create trigger trg2_1 before INSERT on t2 for each row
|
||||||
set new.f1 = 'trig 2_1-yes';
|
set new.f1 = 'trig 2_1-yes';
|
||||||
@ -1111,7 +1111,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
execute ins1;
|
execute ins1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1123,7 +1123,7 @@ current_user
|
|||||||
test_useprivs@localhost
|
test_useprivs@localhost
|
||||||
prepare ins1 from 'insert into t1 (f1) values (''insert5-no'')';
|
prepare ins1 from 'insert into t1 (f1) values (''insert5-no'')';
|
||||||
execute ins1;
|
execute ins1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1174,7 +1174,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
execute ins1;
|
execute ins1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1186,7 +1186,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_useprivs@localhost
|
test_useprivs@localhost
|
||||||
execute ins1;
|
execute ins1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1241,7 +1241,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
execute ins1;
|
execute ins1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1256,7 +1256,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_useprivs@localhost
|
test_useprivs@localhost
|
||||||
execute ins1;
|
execute ins1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1324,11 +1324,11 @@ current_user
|
|||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values ('insert-no');
|
insert into t1 (f1) values ('insert-no');
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
drop trigger trg1_0;
|
drop trigger trg1_0;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
connection default;
|
connection default;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -1577,12 +1577,12 @@ update t1 set f1 = 'update6_no'
|
|||||||
where f1 like '%insert%';
|
where f1 like '%insert%';
|
||||||
update t2 set f1 = 'update6_no'
|
update t2 set f1 = 'update6_no'
|
||||||
where f1 like '%insert%';
|
where f1 like '%insert%';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
|
||||||
update t1 set f1 = 'update7_no'
|
update t1 set f1 = 'update7_no'
|
||||||
where f1 like '%insert%';
|
where f1 like '%insert%';
|
||||||
update t2 set f1 = 'update7_no'
|
update t2 set f1 = 'update7_no'
|
||||||
where f1 like '%insert%';
|
where f1 like '%insert%';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1608,7 +1608,7 @@ test_noprivs@localhost
|
|||||||
update t1 set f1 = 'update8-no',
|
update t1 set f1 = 'update8-no',
|
||||||
f2 = 'update8-no'
|
f2 = 'update8-no'
|
||||||
where f2 like '%yes';
|
where f2 like '%yes';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select * from t1 order by f1,f2,f3;
|
select * from t1 order by f1,f2,f3;
|
||||||
f1 f2 f3
|
f1 f2 f3
|
||||||
trig 1_1-yes NULL NULL
|
trig 1_1-yes NULL NULL
|
||||||
@ -1682,7 +1682,7 @@ current_user
|
|||||||
test_noprivs@localhost
|
test_noprivs@localhost
|
||||||
use priv_db;
|
use priv_db;
|
||||||
update t1 set f3= f3+1;
|
update t1 set f3= f3+1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f3 from t1 order by f3;
|
select f3 from t1 order by f3;
|
||||||
f3
|
f3
|
||||||
NULL
|
NULL
|
||||||
|
@ -221,31 +221,31 @@ connect user5_2, localhost, user_2, , db_storedproc_1;
|
|||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp5_s_i();
|
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_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();
|
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;
|
connection default;
|
||||||
|
|
||||||
root@localhost db_storedproc_1
|
root@localhost db_storedproc_1
|
||||||
CALL sp5_sel();
|
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';
|
grant insert on db_storedproc_1.* to 'user_1'@'localhost';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
connection user5_2;
|
connection user5_2;
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp5_s_i();
|
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_ins();
|
||||||
CALL sp5_sel();
|
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;
|
connection default;
|
||||||
|
|
||||||
root@localhost db_storedproc_1
|
root@localhost db_storedproc_1
|
||||||
CALL sp5_sel();
|
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';
|
grant SELECT on db_storedproc_1.* to 'user_1'@'localhost';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
connection user5_2;
|
connection user5_2;
|
||||||
@ -276,9 +276,9 @@ inserted outside of SP NULL
|
|||||||
inserted from sp5_ins 2000-10-00
|
inserted from sp5_ins 2000-10-00
|
||||||
inserted from sp5_s_i 2000-10-00
|
inserted from sp5_s_i 2000-10-00
|
||||||
inserted from sp5_ins 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();
|
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();
|
CALL sp5_sel();
|
||||||
c1 c2 c3
|
c1 c2 c3
|
||||||
inserted outside of SP NULL
|
inserted outside of SP NULL
|
||||||
@ -294,11 +294,11 @@ connection user5_2;
|
|||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp5_s_i();
|
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_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();
|
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;
|
disconnect user5_2;
|
||||||
connection default;
|
connection default;
|
||||||
|
|
||||||
@ -348,9 +348,9 @@ user_2@localhost db_storedproc_1
|
|||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
c1
|
c1
|
||||||
inserted outside SP
|
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();
|
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();
|
CALL sp3166_sel();
|
||||||
c1
|
c1
|
||||||
inserted outside SP
|
inserted outside SP
|
||||||
@ -390,10 +390,10 @@ connect user6_4, localhost, user_2, , db_storedproc_1;
|
|||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp3166_s_i();
|
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_ins();
|
||||||
CALL sp3166_sel();
|
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;
|
disconnect user6_4;
|
||||||
connection default;
|
connection default;
|
||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
|
@ -99,7 +99,7 @@ test_noprivs@localhost
|
|||||||
use priv_db;
|
use priv_db;
|
||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 3.5.3.2_1-no';
|
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;
|
connection default;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values ('insert 3.5.3.2-no');
|
insert into t1 (f1) values ('insert 3.5.3.2-no');
|
||||||
@ -135,7 +135,7 @@ Testcase 3.5.3.6:
|
|||||||
connection no_privs;
|
connection no_privs;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
drop trigger trg1_2;
|
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;
|
connection default;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values ('insert 3.5.3.6-yes');
|
insert into t1 (f1) values ('insert 3.5.3.6-yes');
|
||||||
@ -688,7 +688,7 @@ insert into t2 values (new.f1);
|
|||||||
connection default;
|
connection default;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values (4);
|
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;
|
revoke SELECT on priv_db.t2 from test_yesprivs@localhost;
|
||||||
grant INSERT on priv_db.t2 to test_yesprivs@localhost;
|
grant INSERT on priv_db.t2 to test_yesprivs@localhost;
|
||||||
insert into t1 (f1) values (4);
|
insert into t1 (f1) values (4);
|
||||||
@ -706,7 +706,7 @@ update t2 set f2=new.f1-1;
|
|||||||
connection default;
|
connection default;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values (2);
|
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;
|
revoke INSERT on priv_db.t2 from test_yesprivs@localhost;
|
||||||
grant UPDATE on priv_db.t2 to test_yesprivs@localhost;
|
grant UPDATE on priv_db.t2 to test_yesprivs@localhost;
|
||||||
insert into t1 (f1) values (2);
|
insert into t1 (f1) values (2);
|
||||||
@ -725,7 +725,7 @@ select f2 into @aaa from t2 where f2=new.f1;
|
|||||||
connection default;
|
connection default;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values (1);
|
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;
|
revoke UPDATE on priv_db.t2 from test_yesprivs@localhost;
|
||||||
grant SELECT on priv_db.t2 to test_yesprivs@localhost;
|
grant SELECT on priv_db.t2 to test_yesprivs@localhost;
|
||||||
insert into t1 (f1) values (1);
|
insert into t1 (f1) values (1);
|
||||||
@ -748,7 +748,7 @@ delete from t2;
|
|||||||
connection default;
|
connection default;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values (1);
|
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;
|
revoke SELECT on priv_db.t2 from test_yesprivs@localhost;
|
||||||
grant DELETE on priv_db.t2 to test_yesprivs@localhost;
|
grant DELETE on priv_db.t2 to test_yesprivs@localhost;
|
||||||
insert into t1 (f1) values (1);
|
insert into t1 (f1) values (1);
|
||||||
|
@ -32,7 +32,7 @@ no trigger privilege on db level for create:
|
|||||||
use priv_db;
|
use priv_db;
|
||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_1-no';
|
set new.f1 = 'trig 1_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
connect no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK;
|
connect no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values ('insert-yes');
|
insert into t1 (f1) values ('insert-yes');
|
||||||
@ -108,7 +108,7 @@ current_user
|
|||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
use priv_db;
|
use priv_db;
|
||||||
drop trigger trg1_2;
|
drop trigger trg1_2;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
connection no_privs;
|
connection no_privs;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -118,7 +118,7 @@ use priv_db;
|
|||||||
no trigger privilege at activation time:
|
no trigger privilege at activation time:
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
insert into t1 (f1) values ('insert-yes');
|
insert into t1 (f1) values ('insert-yes');
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
insert-yes
|
insert-yes
|
||||||
@ -156,7 +156,7 @@ Grants for test_yesprivs@localhost
|
|||||||
GRANT USAGE ON *.* TO `test_yesprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT USAGE ON *.* TO `test_yesprivs`@`localhost` IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT, UPDATE, TRIGGER ON `priv_db`.* TO `test_yesprivs`@`localhost`
|
GRANT SELECT, UPDATE, TRIGGER ON `priv_db`.* TO `test_yesprivs`@`localhost`
|
||||||
drop trigger trg1_2;
|
drop trigger trg1_2;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
|
|
||||||
takes effect after use priv_db:
|
takes effect after use priv_db:
|
||||||
-------------------------------
|
-------------------------------
|
||||||
@ -196,14 +196,14 @@ test_yesprivs@localhost
|
|||||||
use no_priv_db;
|
use no_priv_db;
|
||||||
create trigger trg1_3 before INSERT on t1 for each row
|
create trigger trg1_3 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_3-no';
|
set new.f1 = 'trig 1_3-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `no_priv_db`.`t1`
|
||||||
use priv_db;
|
use priv_db;
|
||||||
create trigger trg1_3 before INSERT on t1 for each row
|
create trigger trg1_3 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_3-yes';
|
set new.f1 = 'trig 1_3-yes';
|
||||||
use no_priv_db;
|
use no_priv_db;
|
||||||
create trigger trg1_4 before UPDATE on t1 for each row
|
create trigger trg1_4 before UPDATE on t1 for each row
|
||||||
set new.f1 = 'trig 1_4-no';
|
set new.f1 = 'trig 1_4-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `no_priv_db`.`t1`
|
||||||
use priv_db;
|
use priv_db;
|
||||||
create trigger trg1_4 before UPDATE on t1 for each row
|
create trigger trg1_4 before UPDATE on t1 for each row
|
||||||
set new.f1 = 'trig 1_4-yes';
|
set new.f1 = 'trig 1_4-yes';
|
||||||
@ -303,7 +303,7 @@ Tables_in_priv_db
|
|||||||
t1
|
t1
|
||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_1-no';
|
set new.f1 = 'trig 1_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
connection no_privs;
|
connection no_privs;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -377,7 +377,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
drop trigger trg1_2;
|
drop trigger trg1_2;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
|
|
||||||
no trigger privilege at activation time:
|
no trigger privilege at activation time:
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
@ -386,7 +386,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_noprivs@localhost
|
test_noprivs@localhost
|
||||||
insert into t1 (f1) values ('insert5-no');
|
insert into t1 (f1) values ('insert5-no');
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
insert1-yes
|
insert1-yes
|
||||||
@ -477,12 +477,12 @@ current_user
|
|||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
create trigger trg2_1 before INSERT on t2 for each row
|
create trigger trg2_1 before INSERT on t2 for each row
|
||||||
set new.f1 = 'trig 2_1-no';
|
set new.f1 = 'trig 2_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
|
||||||
create trigger trg1_3 before INSERT on t1 for each row
|
create trigger trg1_3 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_3-yes';
|
set new.f1 = 'trig 1_3-yes';
|
||||||
create trigger trg2_2 before UPDATE on t2 for each row
|
create trigger trg2_2 before UPDATE on t2 for each row
|
||||||
set new.f1 = 'trig 2_2-no';
|
set new.f1 = 'trig 2_2-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
|
||||||
create trigger trg1_4 before UPDATE on t1 for each row
|
create trigger trg1_4 before UPDATE on t1 for each row
|
||||||
set new.f1 = 'trig 1_4-yes';
|
set new.f1 = 'trig 1_4-yes';
|
||||||
show triggers;
|
show triggers;
|
||||||
@ -616,7 +616,7 @@ Trigger Event Table Statement Timing Created sql_mode Definer character_set_clie
|
|||||||
select * from information_schema.triggers;
|
select * from information_schema.triggers;
|
||||||
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
|
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
|
||||||
drop trigger trg1_1;
|
drop trigger trg1_1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
connection default;
|
connection default;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -636,7 +636,7 @@ current_user
|
|||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_1-no';
|
set new.f1 = 'trig 1_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
connection no_privs;
|
connection no_privs;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -672,11 +672,11 @@ set new.f1 = 'trig 1_2-yes';
|
|||||||
create trigger no_priv_db.trg1_9 before insert on no_priv_db.t1
|
create trigger no_priv_db.trg1_9 before insert on no_priv_db.t1
|
||||||
for each row
|
for each row
|
||||||
set new.f1 = 'trig 1_9-yes';
|
set new.f1 = 'trig 1_9-yes';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `no_priv_db`.`t1`
|
||||||
use no_priv_db;
|
use no_priv_db;
|
||||||
create trigger trg1_2 before INSERT on t1 for each row
|
create trigger trg1_2 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_2-no';
|
set new.f1 = 'trig 1_2-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `no_priv_db`.`t1`
|
||||||
create trigger priv_db.trg1_9 before UPDATE on priv_db.t1
|
create trigger priv_db.trg1_9 before UPDATE on priv_db.t1
|
||||||
for each row
|
for each row
|
||||||
set new.f1 = 'trig 1_9-yes';
|
set new.f1 = 'trig 1_9-yes';
|
||||||
@ -700,7 +700,7 @@ select f1 from t1 order by f1;
|
|||||||
f1
|
f1
|
||||||
insert-yes
|
insert-yes
|
||||||
drop trigger priv_db.trg1_9;
|
drop trigger priv_db.trg1_9;
|
||||||
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;
|
connection default;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -709,7 +709,7 @@ drop trigger priv_db.trg1_9;
|
|||||||
revoke TRIGGER on priv_db.* from test_yesprivs@localhost;
|
revoke TRIGGER on priv_db.* from test_yesprivs@localhost;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values ('insert-yes');
|
insert into t1 (f1) values ('insert-yes');
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
insert-yes
|
insert-yes
|
||||||
@ -729,7 +729,7 @@ test_yesprivs@localhost
|
|||||||
use no_priv_db;
|
use no_priv_db;
|
||||||
create trigger trg1_2 before INSERT on t1 for each row
|
create trigger trg1_2 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_2-no';
|
set new.f1 = 'trig 1_2-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `no_priv_db`.`t1`
|
||||||
connection no_privs;
|
connection no_privs;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -844,7 +844,7 @@ set new.f1 = 'trig 2_1-yes';
|
|||||||
use priv2_db;
|
use priv2_db;
|
||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig1_1-yes';
|
set new.f1 = 'trig1_1-yes';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv2_db`.`t1`
|
||||||
connection no_privs;
|
connection no_privs;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -919,7 +919,7 @@ test_yesprivs@localhost
|
|||||||
use priv1_db;
|
use priv1_db;
|
||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_1-no';
|
set new.f1 = 'trig 1_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv1_db`.`t1`
|
||||||
connection default;
|
connection default;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -946,7 +946,7 @@ create trigger trg1_2 before INSERT on t1 for each row
|
|||||||
set new.f1 = 'trig 1_2-yes';
|
set new.f1 = 'trig 1_2-yes';
|
||||||
create trigger trg2_1 before INSERT on t2 for each row
|
create trigger trg2_1 before INSERT on t2 for each row
|
||||||
set new.f1 = 'trig 2_1-no';
|
set new.f1 = 'trig 2_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv1_db`.`t2`
|
||||||
connection no_privs;
|
connection no_privs;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -987,7 +987,7 @@ current_user
|
|||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
create trigger trg2_1 before INSERT on t2 for each row
|
create trigger trg2_1 before INSERT on t2 for each row
|
||||||
set new.f1 = 'trig 2_1-yes';
|
set new.f1 = 'trig 2_1-yes';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv1_db`.`t2`
|
||||||
use priv1_db;
|
use priv1_db;
|
||||||
create trigger trg2_1 before INSERT on t2 for each row
|
create trigger trg2_1 before INSERT on t2 for each row
|
||||||
set new.f1 = 'trig 2_1-yes';
|
set new.f1 = 'trig 2_1-yes';
|
||||||
@ -1111,7 +1111,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
execute ins1;
|
execute ins1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1123,7 +1123,7 @@ current_user
|
|||||||
test_useprivs@localhost
|
test_useprivs@localhost
|
||||||
prepare ins1 from 'insert into t1 (f1) values (''insert5-no'')';
|
prepare ins1 from 'insert into t1 (f1) values (''insert5-no'')';
|
||||||
execute ins1;
|
execute ins1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1174,7 +1174,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
execute ins1;
|
execute ins1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1186,7 +1186,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_useprivs@localhost
|
test_useprivs@localhost
|
||||||
execute ins1;
|
execute ins1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1241,7 +1241,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
execute ins1;
|
execute ins1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1256,7 +1256,7 @@ select current_user;
|
|||||||
current_user
|
current_user
|
||||||
test_useprivs@localhost
|
test_useprivs@localhost
|
||||||
execute ins1;
|
execute ins1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1324,11 +1324,11 @@ current_user
|
|||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values ('insert-no');
|
insert into t1 (f1) values ('insert-no');
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
drop trigger trg1_0;
|
drop trigger trg1_0;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
connection default;
|
connection default;
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
@ -1577,12 +1577,12 @@ update t1 set f1 = 'update6_no'
|
|||||||
where f1 like '%insert%';
|
where f1 like '%insert%';
|
||||||
update t2 set f1 = 'update6_no'
|
update t2 set f1 = 'update6_no'
|
||||||
where f1 like '%insert%';
|
where f1 like '%insert%';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
|
||||||
update t1 set f1 = 'update7_no'
|
update t1 set f1 = 'update7_no'
|
||||||
where f1 like '%insert%';
|
where f1 like '%insert%';
|
||||||
update t2 set f1 = 'update7_no'
|
update t2 set f1 = 'update7_no'
|
||||||
where f1 like '%insert%';
|
where f1 like '%insert%';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't2'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t2`
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
@ -1608,7 +1608,7 @@ test_noprivs@localhost
|
|||||||
update t1 set f1 = 'update8-no',
|
update t1 set f1 = 'update8-no',
|
||||||
f2 = 'update8-no'
|
f2 = 'update8-no'
|
||||||
where f2 like '%yes';
|
where f2 like '%yes';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select * from t1 order by f1,f2,f3;
|
select * from t1 order by f1,f2,f3;
|
||||||
f1 f2 f3
|
f1 f2 f3
|
||||||
trig 1_1-yes NULL NULL
|
trig 1_1-yes NULL NULL
|
||||||
@ -1682,7 +1682,7 @@ current_user
|
|||||||
test_noprivs@localhost
|
test_noprivs@localhost
|
||||||
use priv_db;
|
use priv_db;
|
||||||
update t1 set f3= f3+1;
|
update t1 set f3= f3+1;
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table `priv_db`.`t1`
|
||||||
select f3 from t1 order by f3;
|
select f3 from t1 order by f3;
|
||||||
f3
|
f3
|
||||||
NULL
|
NULL
|
||||||
|
@ -1849,7 +1849,7 @@ connection u_1;
|
|||||||
user_1@localhost db_storedproc
|
user_1@localhost db_storedproc
|
||||||
USE db_storedproc;
|
USE db_storedproc;
|
||||||
CALL sp11();
|
CALL sp11();
|
||||||
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table 't1'
|
ERROR 42000: INSERT command denied to user 'user_1'@'localhost' for table `mysql`.`t1`
|
||||||
commit work;
|
commit work;
|
||||||
disconnect u_1;
|
disconnect u_1;
|
||||||
connection default;
|
connection default;
|
||||||
|
@ -33,7 +33,7 @@ GRANT USAGE ON *.* TO `foo`@`localhost`
|
|||||||
FLUSH TABLES;
|
FLUSH TABLES;
|
||||||
ERROR 42000: Access denied; you need (at least one of) the RELOAD privilege(s) for this operation
|
ERROR 42000: Access denied; you need (at least one of) the RELOAD privilege(s) for this operation
|
||||||
SELECT * FROM mysql.roles_mapping;
|
SELECT * FROM mysql.roles_mapping;
|
||||||
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table 'roles_mapping'
|
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table `mysql`.`roles_mapping`
|
||||||
SHOW TABLES FROM test1;
|
SHOW TABLES FROM test1;
|
||||||
ERROR 42000: Access denied for user 'foo'@'localhost' to database 'test1'
|
ERROR 42000: Access denied for user 'foo'@'localhost' to database 'test1'
|
||||||
SET ROLE role1;
|
SET ROLE role1;
|
||||||
@ -51,7 +51,7 @@ a b
|
|||||||
1 2
|
1 2
|
||||||
3 4
|
3 4
|
||||||
SELECT * FROM test1.t2;
|
SELECT * FROM test1.t2;
|
||||||
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table 't2'
|
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table `test1`.`t2`
|
||||||
SELECT a FROM test1.t2;
|
SELECT a FROM test1.t2;
|
||||||
a
|
a
|
||||||
5
|
5
|
||||||
@ -69,7 +69,7 @@ GRANT USAGE ON *.* TO `foo`@`localhost`
|
|||||||
FLUSH TABLES;
|
FLUSH TABLES;
|
||||||
ERROR 42000: Access denied; you need (at least one of) the RELOAD privilege(s) for this operation
|
ERROR 42000: Access denied; you need (at least one of) the RELOAD privilege(s) for this operation
|
||||||
SELECT * FROM mysql.roles_mapping;
|
SELECT * FROM mysql.roles_mapping;
|
||||||
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table 'roles_mapping'
|
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table `mysql`.`roles_mapping`
|
||||||
SHOW TABLES FROM test1;
|
SHOW TABLES FROM test1;
|
||||||
ERROR 42000: Access denied for user 'foo'@'localhost' to database 'test1'
|
ERROR 42000: Access denied for user 'foo'@'localhost' to database 'test1'
|
||||||
SET ROLE role1;
|
SET ROLE role1;
|
||||||
@ -87,7 +87,7 @@ a b
|
|||||||
1 2
|
1 2
|
||||||
3 4
|
3 4
|
||||||
SELECT * FROM test1.t2;
|
SELECT * FROM test1.t2;
|
||||||
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table 't2'
|
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table `test1`.`t2`
|
||||||
SELECT a FROM test1.t2;
|
SELECT a FROM test1.t2;
|
||||||
a
|
a
|
||||||
5
|
5
|
||||||
@ -124,11 +124,11 @@ DROP ROLE role1;
|
|||||||
connection foo_node_1;
|
connection foo_node_1;
|
||||||
FLUSH TABLES;
|
FLUSH TABLES;
|
||||||
SELECT * FROM mysql.roles_mapping;
|
SELECT * FROM mysql.roles_mapping;
|
||||||
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table 'roles_mapping'
|
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table `mysql`.`roles_mapping`
|
||||||
SELECT * FROM test1.t1;
|
SELECT * FROM test1.t1;
|
||||||
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table 't1'
|
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table `test1`.`t1`
|
||||||
SELECT a FROM test1.t2;
|
SELECT a FROM test1.t2;
|
||||||
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table 't2'
|
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table `test1`.`t2`
|
||||||
SHOW GRANTS;
|
SHOW GRANTS;
|
||||||
Grants for foo@localhost
|
Grants for foo@localhost
|
||||||
GRANT USAGE ON *.* TO `foo`@`localhost`
|
GRANT USAGE ON *.* TO `foo`@`localhost`
|
||||||
@ -146,11 +146,11 @@ role1
|
|||||||
connection foo_node_2;
|
connection foo_node_2;
|
||||||
FLUSH TABLES;
|
FLUSH TABLES;
|
||||||
SELECT * FROM mysql.roles_mapping;
|
SELECT * FROM mysql.roles_mapping;
|
||||||
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table 'roles_mapping'
|
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table `mysql`.`roles_mapping`
|
||||||
SELECT * FROM test1.t1;
|
SELECT * FROM test1.t1;
|
||||||
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table 't1'
|
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table `test1`.`t1`
|
||||||
SELECT a FROM test1.t2;
|
SELECT a FROM test1.t2;
|
||||||
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table 't2'
|
ERROR 42000: SELECT command denied to user 'foo'@'localhost' for table `test1`.`t2`
|
||||||
SHOW GRANTS;
|
SHOW GRANTS;
|
||||||
Grants for foo@localhost
|
Grants for foo@localhost
|
||||||
GRANT USAGE ON *.* TO `foo`@`localhost`
|
GRANT USAGE ON *.* TO `foo`@`localhost`
|
||||||
|
@ -23,7 +23,7 @@ i
|
|||||||
1
|
1
|
||||||
# Following RENAME should not replicate to other node.
|
# Following RENAME should not replicate to other node.
|
||||||
RENAME TABLE t1 TO t2;
|
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
|
# On node 2
|
||||||
connection node_2;
|
connection node_2;
|
||||||
USE test;
|
USE test;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
--source include/have_innodb.inc
|
--source include/have_innodb.inc
|
||||||
--source include/have_debug.inc
|
--source include/have_debug.inc
|
||||||
|
--source include/have_debug_sync.inc
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # MDEV-24971 InnoDB access freed virtual column
|
--echo # MDEV-24971 InnoDB access freed virtual column
|
||||||
|
@ -433,13 +433,29 @@ INSERT INTO t1 VALUES(1, repeat('a', 10000));
|
|||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
SET DEBUG_SYNC = 'now SIGNAL ins';
|
SET DEBUG_SYNC = 'now SIGNAL ins';
|
||||||
connection con1;
|
connection con1;
|
||||||
disconnect con1;
|
|
||||||
connection default;
|
connection default;
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
a b
|
a b
|
||||||
0 NULL
|
0 NULL
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET DEBUG_SYNC = 'RESET';
|
SET DEBUG_SYNC = 'RESET';
|
||||||
|
#
|
||||||
|
# MDEV-29600 Memory leak in row_log_table_apply_update()
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (pk INT PRIMARY KEY, f TEXT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 SET pk=1;
|
||||||
|
connection con1;
|
||||||
|
SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL created WAIT_FOR updated';
|
||||||
|
ALTER TABLE t1 FORCE;
|
||||||
|
connection default;
|
||||||
|
SET DEBUG_SYNC = 'now WAIT_FOR created';
|
||||||
|
UPDATE t1 SET f = REPEAT('a', 20000);
|
||||||
|
SET DEBUG_SYNC = 'now SIGNAL updated';
|
||||||
|
connection con1;
|
||||||
|
disconnect con1;
|
||||||
|
connection default;
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET DEBUG_SYNC = 'RESET';
|
||||||
SET GLOBAL innodb_file_per_table = @global_innodb_file_per_table_orig;
|
SET GLOBAL innodb_file_per_table = @global_innodb_file_per_table_orig;
|
||||||
SET GLOBAL innodb_monitor_enable = default;
|
SET GLOBAL innodb_monitor_enable = default;
|
||||||
SET GLOBAL innodb_monitor_disable = default;
|
SET GLOBAL innodb_monitor_disable = default;
|
||||||
|
@ -304,3 +304,13 @@ CREATE TABLE t1 (a INT) ENGINE=InnoDB PARTITION BY HASH(a) PARTITIONS 2;
|
|||||||
INSERT INTO t1 VALUES (1),(2);
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
ALTER TABLE t1 REBUILD PARTITION p0;
|
ALTER TABLE t1 REBUILD PARTITION p0;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# MDEV-29570 InnoDB fails to clean bulk buffer when server
|
||||||
|
# does rollback operation
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (pk INT PRIMARY KEY) ENGINE=InnoDB
|
||||||
|
PARTITION BY RANGE (pk) (
|
||||||
|
PARTITION pn VALUES LESS THAN (20));
|
||||||
|
INSERT INTO t1 VALUES (1),(21);
|
||||||
|
ERROR HY000: Table has no partition for value 21
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
--source include/have_innodb.inc
|
--source include/have_innodb.inc
|
||||||
--source include/have_debug.inc
|
--source include/have_debug.inc
|
||||||
|
--source include/have_debug_sync.inc
|
||||||
--source include/have_sequence.inc
|
--source include/have_sequence.inc
|
||||||
|
|
||||||
CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL,
|
CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
--source include/have_innodb.inc
|
--source include/have_innodb.inc
|
||||||
--source include/have_debug.inc
|
--source include/have_debug.inc
|
||||||
|
--source include/have_debug_sync.inc
|
||||||
|
|
||||||
create table t1(f1 char(10), f2 char(10) not null, f3 int not null,
|
create table t1(f1 char(10), f2 char(10) not null, f3 int not null,
|
||||||
f4 int not null, primary key(f3))engine=innodb;
|
f4 int not null, primary key(f3))engine=innodb;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
--source include/have_innodb.inc
|
--source include/have_innodb.inc
|
||||||
--source include/have_debug.inc
|
--source include/have_debug.inc
|
||||||
|
--source include/have_debug_sync.inc
|
||||||
--source include/not_embedded.inc
|
--source include/not_embedded.inc
|
||||||
|
|
||||||
# Two parallel connection with autoinc column after restart.
|
# Two parallel connection with autoinc column after restart.
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user