mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Sequences with negative numbers and auto_increment_increment crashes
This also fixes MDEV-16313 Assertion `next_free_value % real_increment == offset' fails upon CREATE SEQUENCE in galera cluster Fixed by adding llabs() to assert. Also adjusted auto_increment_offset to mod auto_increment_increment.
This commit is contained in:
30
mysql-test/suite/sql_sequence/auto_increment.result
Normal file
30
mysql-test/suite/sql_sequence/auto_increment.result
Normal file
@ -0,0 +1,30 @@
|
||||
set global auto_increment_increment= 2, auto_increment_offset= 2;
|
||||
create sequence s start with -3 minvalue= -1000 increment 0;
|
||||
select nextval(s);
|
||||
nextval(s)
|
||||
-2
|
||||
select nextval(s);
|
||||
nextval(s)
|
||||
0
|
||||
flush tables;
|
||||
select nextval(s);
|
||||
nextval(s)
|
||||
1998
|
||||
drop sequence s;
|
||||
set global auto_increment_increment= 2, auto_increment_offset= 1;
|
||||
create sequence s start with -3 minvalue= -1000 increment 0;
|
||||
select nextval(s);
|
||||
nextval(s)
|
||||
-3
|
||||
select nextval(s);
|
||||
nextval(s)
|
||||
-1
|
||||
select nextval(s);
|
||||
nextval(s)
|
||||
1
|
||||
flush tables;
|
||||
select nextval(s);
|
||||
nextval(s)
|
||||
1997
|
||||
drop sequence s;
|
||||
set global auto_increment_increment= default, auto_increment_offset= default;
|
30
mysql-test/suite/sql_sequence/auto_increment.test
Normal file
30
mysql-test/suite/sql_sequence/auto_increment.test
Normal file
@ -0,0 +1,30 @@
|
||||
--source include/have_sequence.inc
|
||||
|
||||
#
|
||||
# tests with auto_increment_increment and auto_increment_offset
|
||||
#
|
||||
|
||||
set global auto_increment_increment= 2, auto_increment_offset= 2;
|
||||
|
||||
create sequence s start with -3 minvalue= -1000 increment 0;
|
||||
|
||||
select nextval(s);
|
||||
select nextval(s);
|
||||
flush tables;
|
||||
select nextval(s);
|
||||
drop sequence s;
|
||||
|
||||
set global auto_increment_increment= 2, auto_increment_offset= 1;
|
||||
|
||||
create sequence s start with -3 minvalue= -1000 increment 0;
|
||||
|
||||
select nextval(s);
|
||||
select nextval(s);
|
||||
select nextval(s);
|
||||
flush tables;
|
||||
select nextval(s);
|
||||
drop sequence s;
|
||||
|
||||
# Clean up
|
||||
|
||||
set global auto_increment_increment= default, auto_increment_offset= default;
|
@ -519,3 +519,18 @@ create temporary table tmp (i int);
|
||||
select next value for tmp;
|
||||
ERROR 42S02: 'test.tmp' is not a SEQUENCE
|
||||
drop table tmp;
|
||||
#
|
||||
# Test negative numbers
|
||||
#
|
||||
create sequence s start with 1 minvalue=-1000 maxvalue=1000 increment -1;
|
||||
select next value for s;
|
||||
next value for s
|
||||
1
|
||||
select next value for s;
|
||||
next value for s
|
||||
0
|
||||
flush tables;
|
||||
select next value for s;
|
||||
next value for s
|
||||
-999
|
||||
drop sequence s;
|
||||
|
@ -269,3 +269,14 @@ 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;
|
||||
|
Reference in New Issue
Block a user