mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 10:14:19 +01:00
Don't allow ALTER TABLE ... ORDER BY on SEQUENCE objects
MDEV-19320 Sequence gets corrupted and produces ER_KEY_NOT_FOUND (Can't find record) after ALTER .. ORDER BY
This commit is contained in:
parent
e6a6382f15
commit
a9bee9884a
3 changed files with 23 additions and 0 deletions
|
@ -242,3 +242,10 @@ CREATE SEQUENCE t1 engine=innodb;
|
|||
ALTER IGNORE TABLE t1 ADD CHECK (start_value < minimum_value);
|
||||
ERROR HY000: Sequence 'test.t1' table structure is invalid (Sequence tables cannot have any constraints)
|
||||
DROP SEQUENCE t1;
|
||||
CREATE SEQUENCE s;
|
||||
ALTER TABLE s ORDER BY cache_size;
|
||||
ERROR HY000: Sequence 'test.s' table structure is invalid (ORDER BY)
|
||||
SELECT NEXTVAL(s);
|
||||
NEXTVAL(s)
|
||||
1
|
||||
DROP SEQUENCE s;
|
||||
|
|
|
@ -149,3 +149,14 @@ CREATE SEQUENCE t1 engine=innodb;
|
|||
--error ER_SEQUENCE_INVALID_TABLE_STRUCTURE
|
||||
ALTER IGNORE TABLE t1 ADD CHECK (start_value < minimum_value);
|
||||
DROP SEQUENCE t1;
|
||||
|
||||
#
|
||||
# MDEV-19320 Sequence gets corrupted and produces ER_KEY_NOT_FOUND (Can't
|
||||
# find record) after ALTER .. ORDER BY
|
||||
#
|
||||
|
||||
CREATE SEQUENCE s;
|
||||
--error ER_SEQUENCE_INVALID_TABLE_STRUCTURE
|
||||
ALTER TABLE s ORDER BY cache_size;
|
||||
SELECT NEXTVAL(s);
|
||||
DROP SEQUENCE s;
|
||||
|
|
|
@ -208,6 +208,11 @@ bool check_sequence_fields(LEX *lex, List<Create_field> *fields)
|
|||
reason= "Sequence tables cannot have any constraints";
|
||||
goto err;
|
||||
}
|
||||
if (lex->alter_info.flags & ALTER_ORDER)
|
||||
{
|
||||
reason= "ORDER BY";
|
||||
goto err;
|
||||
}
|
||||
|
||||
for (field_no= 0; (field= it++); field_no++)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue