MDEV-33169 Reset sequence used fields after check in alter sequence
The bitmap is temporarily flipped to ~0 for the sake of checking all fields. It needs to be restored because it will be reused in second and subsequent ps execution.
This commit is contained in:
parent
f7573e7a83
commit
ca276a0f3f
@ -252,3 +252,52 @@ SELECT NEXTVAL(s);
|
||||
NEXTVAL(s)
|
||||
1
|
||||
DROP SEQUENCE s;
|
||||
#
|
||||
# MDEV-33169 Alter sequence 2nd ps fails while alter sequence 2nd time (no ps) succeeds
|
||||
#
|
||||
create sequence s;
|
||||
show create sequence s;
|
||||
Table Create Table
|
||||
s CREATE SEQUENCE `s` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 cache 1000 nocycle ENGINE=MyISAM
|
||||
alter sequence s maxvalue 123;
|
||||
show create sequence s;
|
||||
Table Create Table
|
||||
s CREATE SEQUENCE `s` start with 1 minvalue 1 maxvalue 123 increment by 1 cache 1000 nocycle ENGINE=MyISAM
|
||||
alter sequence s maxvalue 123;
|
||||
show create sequence s;
|
||||
Table Create Table
|
||||
s CREATE SEQUENCE `s` start with 1 minvalue 1 maxvalue 123 increment by 1 cache 1000 nocycle ENGINE=MyISAM
|
||||
drop sequence s;
|
||||
create sequence s;
|
||||
show create sequence s;
|
||||
Table Create Table
|
||||
s CREATE SEQUENCE `s` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 cache 1000 nocycle ENGINE=MyISAM
|
||||
prepare stmt from 'alter sequence s maxvalue 123';
|
||||
execute stmt;
|
||||
show create sequence s;
|
||||
Table Create Table
|
||||
s CREATE SEQUENCE `s` start with 1 minvalue 1 maxvalue 123 increment by 1 cache 1000 nocycle ENGINE=MyISAM
|
||||
execute stmt;
|
||||
show create sequence s;
|
||||
Table Create Table
|
||||
s CREATE SEQUENCE `s` start with 1 minvalue 1 maxvalue 123 increment by 1 cache 1000 nocycle ENGINE=MyISAM
|
||||
deallocate prepare stmt;
|
||||
drop sequence s;
|
||||
create sequence s;
|
||||
show create sequence s;
|
||||
Table Create Table
|
||||
s CREATE SEQUENCE `s` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 cache 1000 nocycle ENGINE=MyISAM
|
||||
create procedure p() alter sequence s maxvalue 123;
|
||||
call p;
|
||||
show create sequence s;
|
||||
Table Create Table
|
||||
s CREATE SEQUENCE `s` start with 1 minvalue 1 maxvalue 123 increment by 1 cache 1000 nocycle ENGINE=MyISAM
|
||||
call p;
|
||||
show create sequence s;
|
||||
Table Create Table
|
||||
s CREATE SEQUENCE `s` start with 1 minvalue 1 maxvalue 123 increment by 1 cache 1000 nocycle ENGINE=MyISAM
|
||||
drop procedure p;
|
||||
drop sequence s;
|
||||
#
|
||||
# End of 10.4 tests
|
||||
#
|
||||
|
@ -167,3 +167,38 @@ ALTER TABLE s ORDER BY cache_size;
|
||||
SELECT NEXTVAL(s);
|
||||
DROP SEQUENCE s;
|
||||
--enable_ps2_protocol
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-33169 Alter sequence 2nd ps fails while alter sequence 2nd time (no ps) succeeds
|
||||
--echo #
|
||||
create sequence s;
|
||||
show create sequence s;
|
||||
alter sequence s maxvalue 123;
|
||||
show create sequence s;
|
||||
alter sequence s maxvalue 123;
|
||||
show create sequence s;
|
||||
drop sequence s;
|
||||
|
||||
create sequence s;
|
||||
show create sequence s;
|
||||
prepare stmt from 'alter sequence s maxvalue 123';
|
||||
execute stmt;
|
||||
show create sequence s;
|
||||
execute stmt;
|
||||
show create sequence s;
|
||||
deallocate prepare stmt;
|
||||
drop sequence s;
|
||||
|
||||
create sequence s;
|
||||
show create sequence s;
|
||||
create procedure p() alter sequence s maxvalue 123;
|
||||
call p;
|
||||
show create sequence s;
|
||||
call p;
|
||||
show create sequence s;
|
||||
drop procedure p;
|
||||
drop sequence s;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
@ -924,6 +924,7 @@ bool Sql_cmd_alter_sequence::execute(THD *thd)
|
||||
TABLE_LIST *first_table= lex->query_tables;
|
||||
TABLE *table;
|
||||
sequence_definition *new_seq= lex->create_info.seq_create_info;
|
||||
uint saved_used_fields= new_seq->used_fields;
|
||||
SEQUENCE *seq;
|
||||
No_such_table_error_handler no_such_table_handler;
|
||||
DBUG_ENTER("Sql_cmd_alter_sequence::execute");
|
||||
@ -1043,5 +1044,6 @@ bool Sql_cmd_alter_sequence::execute(THD *thd)
|
||||
my_ok(thd);
|
||||
|
||||
end:
|
||||
new_seq->used_fields= saved_used_fields;
|
||||
DBUG_RETURN(error);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user