diff options
author | Rucha Deodhar <rucha.deodhar@mariadb.com> | 2022-03-28 15:12:33 +0530 |
---|---|---|
committer | Rucha Deodhar <rucha.deodhar@mariadb.com> | 2022-03-30 15:12:49 +0530 |
commit | c6eeacd10f87eb437097d755d8dd29211ebdab87 (patch) | |
tree | e938184db31f23ea83d4c4171a490eeaa98e2d1e | |
parent | 0b9842a3e766ec56ff3e14bec387dc639677c4db (diff) | |
download | mariadb-git-c6eeacd10f87eb437097d755d8dd29211ebdab87.tar.gz |
MDEV-13005: Fixing bugs in SEQUENCE, part 3, 3/5
Task 3:
Added an additional condition for SEQUENCE option to check if cache < 0.
-rw-r--r-- | mysql-test/suite/sql_sequence/create.result | 3 | ||||
-rw-r--r-- | mysql-test/suite/sql_sequence/create.test | 4 | ||||
-rw-r--r-- | sql/sql_sequence.cc | 2 |
3 files changed, 8 insertions, 1 deletions
diff --git a/mysql-test/suite/sql_sequence/create.result b/mysql-test/suite/sql_sequence/create.result index a7138756b11..e80400023e7 100644 --- a/mysql-test/suite/sql_sequence/create.result +++ b/mysql-test/suite/sql_sequence/create.result @@ -698,3 +698,6 @@ ERROR 42S02: Unknown SEQUENCE: 'x' # Task 2: CREATE SEQUENCE x START WITH 1 INCREMENT BY 123456789012345678; ERROR HY000: Sequence 'test.x' has out of range value for options +# Task 3: +CREATE SEQUENCE seq1 START WITH 1 cache -1; +ERROR HY000: Sequence 'test.seq1' has out of range value for options diff --git a/mysql-test/suite/sql_sequence/create.test b/mysql-test/suite/sql_sequence/create.test index 39fb5a9c9cd..766282be781 100644 --- a/mysql-test/suite/sql_sequence/create.test +++ b/mysql-test/suite/sql_sequence/create.test @@ -529,3 +529,7 @@ SET @x = PREVIOUS VALUE FOR x; --echo # Task 2: --error ER_SEQUENCE_INVALID_DATA CREATE SEQUENCE x START WITH 1 INCREMENT BY 123456789012345678; + +--echo # Task 3: +--error ER_SEQUENCE_INVALID_DATA +CREATE SEQUENCE seq1 START WITH 1 cache -1; diff --git a/sql/sql_sequence.cc b/sql/sql_sequence.cc index 03f2f1b117f..367fbad144c 100644 --- a/sql/sql_sequence.cc +++ b/sql/sql_sequence.cc @@ -121,7 +121,7 @@ bool sequence_definition::check_and_adjust(bool set_reserved_until) start >= min_value && max_value != LONGLONG_MAX && min_value != LONGLONG_MIN && - cache < (LONGLONG_MAX - max_increment) / max_increment && + cache >= 0 && cache < (LONGLONG_MAX - max_increment) / max_increment && ((real_increment > 0 && reserved_until >= min_value) || (real_increment < 0 && reserved_until <= max_value))) DBUG_RETURN(FALSE); |