403Webshell
Server IP : 88.99.149.37  /  Your IP : 216.73.216.141
Web Server : nginx/1.31.2
System : Linux server-88-99-149-37 6.12.0-124.56.5.el10_1.x86_64 #1 SMP PREEMPT_DYNAMIC Fri May 15 06:12:08 EDT 2026 x86_64
User : muralimurth ( 1015)
PHP Version : 8.4.23
Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/local/mysql/mysql-test/suite/sql_sequence/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/local/mysql/mysql-test/suite/sql_sequence/next.test
--source include/have_sequence.inc
--source include/have_innodb.inc

#
# Test sequence generation
#

--disable_ps2_protocol
CREATE SEQUENCE t1 start with 1 minvalue 1 maxvalue 10 increment by 1 cache 2 cycle;
show create table t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;

select NEXT VALUE for t1,seq from seq_1_to_20;

drop sequence t1;

CREATE SEQUENCE t1 minvalue 1 maxvalue 10 increment by -1 cache 2 cycle engine=aria;
select next value for t1;
select next_not_cached_value,cycle_count from t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;
select next value for t1;
select next_not_cached_value,cycle_count from t1;

select NEXT VALUE for t1,seq from seq_1_to_20;

drop sequence t1;

CREATE SEQUENCE t1 start with 8 minvalue 1 maxvalue 10 increment by 1 cache 2 nocycle;
select next value for t1;
select next value for t1;
select next value for t1;
select previous value for t1;
--error ER_SEQUENCE_RUN_OUT
select next value for t1;
select previous value for t1;
--error ER_SEQUENCE_RUN_OUT
select next value for t1;
drop sequence t1;

create sequence s1 start with 1 cache 2 maxvalue 5;
select next value for s1;
select next value for s1;
select next value for s1;
select next value for s1;
select next value for s1;
--error ER_SEQUENCE_RUN_OUT
select next value for s1;
drop sequence s1;

#
# Test that flush tables jumps to next next_not_cached_value
#

CREATE SEQUENCE t1 start with 1 minvalue 1 maxvalue 100 increment by 1 cache 10;
select next value for t1;
select * from t1;
flush tables;
select next value for t1;
select nextval(t1);
drop sequence t1;

#
# Test currval/previous
#

CREATE SEQUENCE t9 start with 1 minvalue 1 maxvalue 10 increment by 1 cache 5 cycle;
select previous value for t9;
select next value for t9;
select previous value for t9, lastval(t9);
select next value for t9;
select previous value for t9, lastval(t9);
select seq, previous value for t9, NEXT VALUE for t9, previous value for t9 from seq_1_to_20;
select * from t9;
drop sequence t9;

#
# CACHE = 0 should be same as CACHE = 1
#
CREATE SEQUENCE s1 cache=0;
select * from s1;
select next value for s1;
select next_not_cached_value from s1;
select next value for s1;
select next_not_cached_value from s1;
DROP SEQUENCE s1;
CREATE SEQUENCE s1 cache=1;
select next_not_cached_value from s1;
select next value for s1;
select next_not_cached_value from s1;
select next value for s1;
select next_not_cached_value from s1;
DROP SEQUENCE s1;
CREATE SEQUENCE s1 cache=2;
select next_not_cached_value from s1;
select next value for s1;
select next_not_cached_value from s1;
select next value for s1;
select next_not_cached_value from s1;
DROP SEQUENCE s1;

#
# Negative increment for sequence
#

CREATE SEQUENCE s1;
select next value for s1;
select next value for s1;
select next value for s1;
select next value for s1;
alter sequence s1 increment -2;
select * from s1;
select next value for s1;
select next value for s1;
alter sequence s1 restart 6;
select next value for s1;
select next value for s1;
select next value for s1;
--error ER_SEQUENCE_RUN_OUT
select next value for s1;
DROP SEQUENCE s1;

#
# Check what happens when one refers to a sequence that has been closed/deleted
#

CREATE SEQUENCE t1 start with 1 minvalue 1 maxvalue 10 increment by 1 cache 5 cycle;
select next value for t1;
select previous value for t1;
flush tables;
select previous value for t1;
drop sequence t1;
--error ER_UNKNOWN_SEQUENCES
select previous value for t1;
CREATE SEQUENCE t1 start with 5 minvalue 1 maxvalue 10 increment by 1 cache 5 cycle;
select previous value for t1;
select next value for t1;
select previous value for t1;
drop sequence t1;

# This failed in an early build

CREATE or replace SEQUENCE  s1  MINVALUE 1 MAXVALUE 9999999999
INCREMENT BY 1 START WITH 3984356 CACHE 20 CYCLE engine=innodb;
show create table s1;
select * from s1;
select NEXT VALUE FOR s1;
select NEXT VALUE FOR s1;
select NEXT VALUE FOR s1;
select * from s1;
FLUSH TABLES;
select * from s1;
select NEXT VALUE FOR s1;
select * from s1;
drop sequence s1;

#
# Explain
#

CREATE SEQUENCE t1 start with 5 minvalue 1 maxvalue 10 increment by 1 cache 5 cycle;
explain select next value for t1;
explain select next value for t1, minimum_value from t1;
drop table t1;

#
# Using insert with NEXT VALUE
#

CREATE SEQUENCE s1;
CREATE TABLE t1 (a int);
insert into t1 values (next value for s1);
insert into t1 values (next value for s1);
select * from t1;
drop table t1,s1;

#
# Using update with NEXT VALUE
#

CREATE SEQUENCE s1;
CREATE TABLE t1 (a int primary key auto_increment, b int default 0) engine=myisam;
insert into t1 values (),(),(),(),(),(),();
update t1 set b= next value for s1 where a <= 3;
select * from t1;
drop table t1,s1;

#
# NO CACHE and InnoDB
#

CREATE OR REPLACE SEQUENCE s1 MINVALUE 1 MAXVALUE 9999999999 INCREMENT BY 1 START WITH 3984356 nocache CYCLE engine='innodb';
select * from s1;
select next value for s1;
explain extended select next value for s1;
explain extended select previous value for s1;
drop sequence s1;

#
# Some error testing
#

create table t1 (a int);
--error ER_NOT_SEQUENCE
select next value for t1;
drop table t1;

create sequence t1;
select next value for t1;
--error ER_BAD_FIELD_ERROR
select next value for t1, minimum_value;
drop sequence t1;

--echo #
--echo # MDEV-12854 Synchronize CREATE..SELECT data type and result set metadata data type for INT functions
--echo #

--enable_metadata
--disable_ps_protocol
CREATE SEQUENCE s1;
SELECT
  NEXT VALUE FOR s1,
  PREVIOUS VALUE FOR s1;
DROP SEQUENCE s1;
--enable_ps_protocol
--disable_metadata

--echo #
--echo # MDEV-13720 ER_NOT_SEQUENCE for temporary table
--echo #

create temporary table tmp (i int);
--error ER_NOT_SEQUENCE
select next value for tmp;
drop table tmp;

--echo #
--echo # Test negative numbers
--echo #

create sequence s start with 1 minvalue=-1000 maxvalue=1000 increment -1;
select next value for s;
select next value for s;
flush tables;
select next value for s;
drop sequence s;

--echo #
--echo # MDEV-23823 NEXT VALUE crash on locked view
--echo #
CREATE VIEW v AS SELECT 1;
LOCK TABLE v READ;
--error ER_NOT_SEQUENCE
SELECT NEXT VALUE FOR v;

--echo #
--echo # MDEV-24018: SIGSEGV in Item_func_nextval::update_table on SELECT SETVAL
--echo #
--error ER_NOT_SEQUENCE
SELECT SETVAL (v,0);

UNLOCK TABLES;
DROP VIEW v;
--disable_ps2_protocol

--echo #
--echo # MDEV-28650 Server crashes in Item_func_nextval::val_int after select from view
--echo #
create sequence s;
create table t1 (a int not null default nextval(s));
insert into t1 values(),();
flush tables;
select default(a) from t1;

create algorithm=merge view v1 as select default(a) from t1;
select * from v1;
Select * from v1;
prepare ps from 'SELECT * from v1';
execute ps; Execute ps;
drop prepare ps;

create or replace algorithm=temptable view v1 as select default(a) from t1;
select * from v1;
Select * from v1;
prepare ps from 'SELECT * from v1';
execute ps; Execute ps;
drop prepare ps;

# cleanup
drop view v1;
drop table t1;
drop sequence s;

--echo #
--echo # MDEV-33985 Server crashes at Item_func_nextval::val_int
--echo #
--error ER_NO_SUCH_TABLE
select * from (select 1 as a) x where (nextval(x));
--error ER_NOT_SEQUENCE2
select (with x(x) as (select 1) select * from x where (nextval(x)));
create sequence s;
--error ER_NO_SUCH_TABLE
select next value for s1 from s as s1;
drop sequence s;

--echo #
--echo # MDEV-38815 Server crashes in Item_func_nextval::val_int upon update on a view
--echo #
create sequence s;
create table t (a int default(nextval(s)));
create view v as select * from t;
insert into t values (1);
update v set a= default;

drop view v;
drop table t;
drop sequence s;

--echo # End of 10.11 tests

Youez - 2016 - github.com/yon3zu
LinuXploit