diff options
Diffstat (limited to 'mysql-test/suite')
-rw-r--r-- | mysql-test/suite/sql_sequence/grant.result | 60 | ||||
-rw-r--r-- | mysql-test/suite/sql_sequence/grant.test | 63 | ||||
-rw-r--r-- | mysql-test/suite/sql_sequence/other.result | 11 | ||||
-rw-r--r-- | mysql-test/suite/sql_sequence/other.test | 13 |
4 files changed, 145 insertions, 2 deletions
diff --git a/mysql-test/suite/sql_sequence/grant.result b/mysql-test/suite/sql_sequence/grant.result new file mode 100644 index 00000000000..7085d548588 --- /dev/null +++ b/mysql-test/suite/sql_sequence/grant.result @@ -0,0 +1,60 @@ +SET @@SQL_MODE = REPLACE(@@SQL_MODE, 'NO_AUTO_CREATE_USER', ''); +create database mysqltest_1; +use mysqltest_1; +grant all on mysqltest_1.* to 'normal'@'%'; +grant select on mysqltest_1.* to 'read_only'@'%'; +grant select,insert on mysqltest_1.* to 'read_write'@'%'; +grant select,insert,alter on mysqltest_1.* to 'alter'@'%'; +grant alter on mysqltest_1.* to only_alter@'%'; +connect normal,localhost,normal,,mysqltest_1; +connect read_only,localhost,read_only,,mysqltest_1; +connect read_write,localhost,read_write,,mysqltest_1; +connect alter,localhost,alter,,mysqltest_1; +connect only_alter, localhost, only_alter,,mysqltest_1; +connection normal; +create sequence s1; +select next value for s1; +next value for s1 +1 +alter sequence s1 restart= 11; +select * from s1; +next_not_cached_value minimum_value maximum_value start_value increment cache_size cycle_option cycle_count +11 1 9223372036854775806 1 1 1000 0 0 +connection read_only; +select next value for s1; +ERROR 42000: INSERT command denied to user 'read_only'@'localhost' for table 's1' +alter sequence s1 restart= 11; +ERROR 42000: ALTER command denied to user 'read_only'@'localhost' for table 's1' +select * from s1; +next_not_cached_value minimum_value maximum_value start_value increment cache_size cycle_option cycle_count +11 1 9223372036854775806 1 1 1000 0 0 +connection read_write; +select next value for s1; +next value for s1 +11 +alter sequence s1 restart= 11; +ERROR 42000: ALTER command denied to user 'read_write'@'localhost' for table 's1' +select * from s1; +next_not_cached_value minimum_value maximum_value start_value increment cache_size cycle_option cycle_count +1011 1 9223372036854775806 1 1 1000 0 0 +connection alter; +select next value for s1; +next value for s1 +12 +alter sequence s1 restart= 11; +select * from s1; +next_not_cached_value minimum_value maximum_value start_value increment cache_size cycle_option cycle_count +11 1 9223372036854775806 1 1 1000 0 0 +connection only_alter; +select next value for s1; +ERROR 42000: INSERT command denied to user 'only_alter'@'localhost' for table 's1' +alter sequence s1 restart= 11; +select * from s1; +ERROR 42000: SELECT command denied to user 'only_alter'@'localhost' for table 's1' +connection default; +drop database mysqltest_1; +drop user 'normal'@'%'; +drop user 'read_only'@'%'; +drop user 'read_write'@'%'; +drop user 'alter'@'%'; +drop user 'only_alter'@'%'; diff --git a/mysql-test/suite/sql_sequence/grant.test b/mysql-test/suite/sql_sequence/grant.test new file mode 100644 index 00000000000..790b876a831 --- /dev/null +++ b/mysql-test/suite/sql_sequence/grant.test @@ -0,0 +1,63 @@ +# +# Test some grants with sequences +# Note that replication.test also does some grant testing +# + +SET @@SQL_MODE = REPLACE(@@SQL_MODE, 'NO_AUTO_CREATE_USER', ''); +create database mysqltest_1; +use mysqltest_1; +grant all on mysqltest_1.* to 'normal'@'%'; +grant select on mysqltest_1.* to 'read_only'@'%'; +grant select,insert on mysqltest_1.* to 'read_write'@'%'; +grant select,insert,alter on mysqltest_1.* to 'alter'@'%'; +grant alter on mysqltest_1.* to only_alter@'%'; + +connect(normal,localhost,normal,,mysqltest_1); +connect(read_only,localhost,read_only,,mysqltest_1); +connect(read_write,localhost,read_write,,mysqltest_1); +connect(alter,localhost,alter,,mysqltest_1); +connect(only_alter, localhost, only_alter,,mysqltest_1); + +connection normal; +create sequence s1; +select next value for s1; +alter sequence s1 restart= 11; +select * from s1; + +connection read_only; +--error ER_TABLEACCESS_DENIED_ERROR +select next value for s1; +--error ER_TABLEACCESS_DENIED_ERROR +alter sequence s1 restart= 11; +select * from s1; + +connection read_write; +select next value for s1; +--error ER_TABLEACCESS_DENIED_ERROR +alter sequence s1 restart= 11; +select * from s1; + +connection alter; +select next value for s1; +alter sequence s1 restart= 11; +select * from s1; + +connection only_alter; +--error ER_TABLEACCESS_DENIED_ERROR +select next value for s1; +alter sequence s1 restart= 11; +--error ER_TABLEACCESS_DENIED_ERROR +select * from s1; + +# +# Cleanup +# + +connection default; +drop database mysqltest_1; +drop user 'normal'@'%'; +drop user 'read_only'@'%'; +drop user 'read_write'@'%'; +drop user 'alter'@'%'; +drop user 'only_alter'@'%'; + diff --git a/mysql-test/suite/sql_sequence/other.result b/mysql-test/suite/sql_sequence/other.result index 86263eb4b70..e3ec94cf2c5 100644 --- a/mysql-test/suite/sql_sequence/other.result +++ b/mysql-test/suite/sql_sequence/other.result @@ -163,7 +163,16 @@ ERROR HY000: Can't execute the query because you have a conflicting read lock unlock tables; drop sequence s1; # -# Don't allow SQUENCE to be used with CHECK or virtual fields +# MDEV-14761 +# Assertion `!mysql_parse_status || thd->is_error() || +# thd->get_internal_handler()' failed in parse_sql +# +CREATE SEQUENCE s1; +ALTER SEQUENCE s1 MAXVALUE 100 NO MAXVALUE; +ERROR HY000: Option 'MAXVALUE' used twice in statement +DROP SEQUENCE s1; +# +# Don't allow SEQUENCE to be used with CHECK or virtual fields # CREATE SEQUENCE s1 nocache engine=myisam; CREATE table t1 (a int check (next value for s1 > 0)); diff --git a/mysql-test/suite/sql_sequence/other.test b/mysql-test/suite/sql_sequence/other.test index 1903fc296f9..ff0db9e158d 100644 --- a/mysql-test/suite/sql_sequence/other.test +++ b/mysql-test/suite/sql_sequence/other.test @@ -133,7 +133,18 @@ unlock tables; drop sequence s1; --echo # ---echo # Don't allow SQUENCE to be used with CHECK or virtual fields +--echo # MDEV-14761 +--echo # Assertion `!mysql_parse_status || thd->is_error() || +--echo # thd->get_internal_handler()' failed in parse_sql +--echo # + +CREATE SEQUENCE s1; +--error ER_DUP_ARGUMENT +ALTER SEQUENCE s1 MAXVALUE 100 NO MAXVALUE; +DROP SEQUENCE s1; + +--echo # +--echo # Don't allow SEQUENCE to be used with CHECK or virtual fields --echo # CREATE SEQUENCE s1 nocache engine=myisam; |