mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
ef2ecf0370
Bug in privilege checking of sequences. Test case added.
175 lines
4 KiB
Text
175 lines
4 KiB
Text
--source include/have_sequence.inc
|
|
--source include/have_innodb.inc
|
|
|
|
drop table if exists t1;
|
|
|
|
--echo #
|
|
--echo # Test alter sequence
|
|
--echo #
|
|
|
|
CREATE SEQUENCE t1 nocache engine=myisam;
|
|
select * from t1;
|
|
select next value for t1;
|
|
alter sequence t1 start=50;
|
|
show create sequence t1;
|
|
select * from t1;
|
|
select next value for t1;
|
|
|
|
alter sequence t1 minvalue=-100;
|
|
show create sequence t1;
|
|
select * from t1;
|
|
--error ER_SEQUENCE_INVALID_DATA
|
|
alter sequence t1 minvalue=100 start=100;
|
|
alter sequence t1 minvalue=100 start=100 restart=100;
|
|
show create sequence t1;
|
|
select * from t1;
|
|
|
|
alter sequence t1 maxvalue=500;
|
|
show create sequence t1;
|
|
select * from t1;
|
|
drop sequence t1;
|
|
|
|
CREATE SEQUENCE t1 engine=myisam;
|
|
alter sequence t1 nocache;
|
|
show create sequence t1;
|
|
alter sequence t1 cache=100;
|
|
flush tables;
|
|
show create sequence t1;
|
|
alter sequence t1 nocache;
|
|
show create sequence t1;
|
|
flush tables;
|
|
show create sequence t1;
|
|
select * from t1;
|
|
select next value for t1;
|
|
select next value for t1;
|
|
select next value for t1;
|
|
select next_not_cached_value, cycle_count from t1;
|
|
drop sequence t1;
|
|
|
|
CREATE SEQUENCE t1 maxvalue=100 engine=myisam;
|
|
alter sequence t1 no maxvalue;
|
|
show create sequence t1;
|
|
select * from t1;
|
|
alter sequence t1 cycle;
|
|
show create sequence t1;
|
|
alter sequence t1 nocycle;
|
|
alter sequence t1 start=15 restart minvalue=10 maxvalue=20 cycle;
|
|
show create sequence t1;
|
|
select * from t1;
|
|
select NEXT VALUE for t1 from seq_1_to_10;
|
|
alter sequence t1 restart with 17 minvalue=10 maxvalue=20 cycle;
|
|
select NEXT VALUE for t1 from seq_1_to_10;
|
|
drop sequence t1;
|
|
|
|
CREATE SEQUENCE t1 maxvalue=100;
|
|
alter sequence t1 increment=-2 start with 50 minvalue=-100;
|
|
show create sequence t1;
|
|
select * from t1;
|
|
select NEXT VALUE for t1 from seq_1_to_10;
|
|
drop sequence t1;
|
|
|
|
--echo #
|
|
--echo # InnoDB (some things work different with InnoDB)
|
|
--echo
|
|
|
|
CREATE SEQUENCE t1 cache 10 engine=innodb;
|
|
select * from t1;
|
|
select next value for t1;
|
|
alter sequence t1 start=100;
|
|
show create sequence t1;
|
|
select * from t1;
|
|
select next value for t1;
|
|
drop sequence t1;
|
|
|
|
--echo #
|
|
--echo # ALTER TABLE
|
|
--echo #
|
|
|
|
CREATE SEQUENCE t1 engine=innodb;
|
|
select next value for t1;
|
|
alter table t1 rename t2;
|
|
select next value for t2;
|
|
rename table t2 to t1;
|
|
select next value for t1;
|
|
alter table t1 comment="foo";
|
|
show create sequence t1;
|
|
alter table t1 engine=myisam;
|
|
show create sequence t1;
|
|
alter table t1 engine=innodb;
|
|
show create sequence t1;
|
|
select * from t1;
|
|
drop sequence t1;
|
|
|
|
#
|
|
# Some error testing
|
|
#
|
|
|
|
CREATE SEQUENCE t1 engine=myisam;
|
|
--error ER_SEQUENCE_INVALID_DATA
|
|
alter sequence t1 minvalue=100;
|
|
drop sequence t1;
|
|
|
|
CREATE SEQUENCE t1 engine=myisam;
|
|
--error ER_SEQUENCE_INVALID_DATA
|
|
alter sequence t1 minvalue=25 maxvalue=20;
|
|
drop sequence t1;
|
|
|
|
create table t1 (a int);
|
|
--error ER_NOT_SEQUENCE
|
|
alter sequence t1 minvalue=100;
|
|
drop table t1;
|
|
|
|
alter sequence if exists t1 minvalue=100;
|
|
--error ER_NO_SUCH_TABLE
|
|
alter sequence t1 minvalue=100;
|
|
|
|
create sequence t1;
|
|
--error ER_PARSE_ERROR
|
|
alter sequence t1;
|
|
drop sequence t1;
|
|
|
|
CREATE SEQUENCE t1 maxvalue=100;
|
|
alter sequence t1 increment=-2 start with 50;
|
|
select next value for t1;
|
|
--error ER_SEQUENCE_RUN_OUT
|
|
select next value for t1;
|
|
select * from t1;
|
|
alter sequence t1 restart;
|
|
select next value for t1;
|
|
alter sequence t1 restart with 90;
|
|
select next value for t1;
|
|
drop sequence t1;
|
|
|
|
--echo
|
|
--echo GRANT
|
|
--echo
|
|
|
|
create database s_db;
|
|
create sequence s_db.s1;
|
|
grant select on s_db.s1 to normal_1@'%' identified by 'pass';
|
|
|
|
connect(m_normal_1, localhost, normal_1, pass, s_db);
|
|
select * from s1;
|
|
--error ER_TABLEACCESS_DENIED_ERROR
|
|
select nextval(s1);
|
|
show create sequence s1;
|
|
--error ER_TABLEACCESS_DENIED_ERROR
|
|
alter sequence s1 restart 50;
|
|
connection default;
|
|
grant insert on s_db.s1 to normal_1@'%';
|
|
connection m_normal_1;
|
|
select nextval(s1);
|
|
--error ER_TABLEACCESS_DENIED_ERROR
|
|
alter sequence s1 restart 50;
|
|
connection default;
|
|
grant alter on s_db.s1 to normal_1@'%';
|
|
connection m_normal_1;
|
|
alter sequence s1 restart 50;
|
|
select nextval(s1);
|
|
--error ER_TABLEACCESS_DENIED_ERROR
|
|
drop sequence s1;
|
|
|
|
connection default;
|
|
disconnect m_normal_1;
|
|
drop database s_db;
|
|
drop user normal_1@'%';
|