mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Make SEQUENCE working with replication
- Old sequence code forced row based replication for any statements that refered to a sequence table. What is new is that row based replication is now sequence aware: - NEXT VALUE is now generating a short row based event with only next_value and round being replicated. - Short row based events are now on the slave updated as trough SET_VALUE(sequence_name) - Full row based events are on the slave updated with a full insert, which is practically same as ALTER SEQUENCE. - INSERT on a SEQUENCE table does now a EXCLUSIVE LOCK to ensure that it is logged in binary log before any following NEXT VALUE calls. - Enable all sequence tests and fixed found bugs - ALTER SEQUENCE doesn't anymore allow changes that makes the next_value outside of allowed range - SEQUENCE changes are done with TL_WRITE_ALLOW_WRITE. Because of this one can generate a statement for MyISAM with both TL_WRITE_CONCURRENT_INSERT and TL_WRITE_ALLOW_WRITE. To fix a warning I had to add an extra test in thr_lock.c for this. - Removed UPDATE of SEQUENCE (no need to support this as we have ALTER SEQUENCE, which takes the EXCLUSIVE lock properly. - Removed DBUG_ASSERT() in MDL_context::upgrade_shared_lock. This was removed upstream in MySQL 5.6 in 72f823de453. - Simplified test in decided_logging_format() by using sql_command_flags() - Fix that we log DROP SEQUENCE correctly. - Fixed that Aria works with SEQUENCE
This commit is contained in:
66
mysql-test/suite/sql_sequence/aria.result
Normal file
66
mysql-test/suite/sql_sequence/aria.result
Normal file
@ -0,0 +1,66 @@
|
||||
set @@default_storage_engine="aria";
|
||||
CREATE SEQUENCE t1 cache=10;
|
||||
show create sequence t1;
|
||||
Table Create Table
|
||||
t1 CREATE SEQUENCE `t1` start with 1 minvalue 1 maxvalue 9223372036854775806 increment by 1 cache 10 nocycle ENGINE=Aria
|
||||
select NEXT VALUE for t1,seq from seq_1_to_20;
|
||||
NEXT VALUE for t1 seq
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
4 4
|
||||
5 5
|
||||
6 6
|
||||
7 7
|
||||
8 8
|
||||
9 9
|
||||
10 10
|
||||
11 11
|
||||
12 12
|
||||
13 13
|
||||
14 14
|
||||
15 15
|
||||
16 16
|
||||
17 17
|
||||
18 18
|
||||
19 19
|
||||
20 20
|
||||
select * from t1;
|
||||
next_value min_value max_value start increment cache cycle round
|
||||
21 1 9223372036854775806 1 1 10 0 0
|
||||
drop sequence t1;
|
||||
create sequence s1;
|
||||
check table s1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.s1 check note The storage engine for the table doesn't support check
|
||||
select next value for s1;
|
||||
next value for s1
|
||||
1
|
||||
flush tables;
|
||||
check table s1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.s1 check note The storage engine for the table doesn't support check
|
||||
select next value for s1;
|
||||
next value for s1
|
||||
1001
|
||||
flush tables;
|
||||
repair table s1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.s1 repair status OK
|
||||
select next value for s1;
|
||||
next value for s1
|
||||
2001
|
||||
drop sequence s1;
|
||||
CREATE SEQUENCE t1;
|
||||
alter sequence t1 minvalue=100;
|
||||
ERROR HY000: Sequence 'test.t1' values are conflicting
|
||||
alter sequence t1 minvalue=100 start=100 restart=100;
|
||||
rename table t1 to t2;
|
||||
select next value for t2;
|
||||
next value for t2
|
||||
100
|
||||
alter table t2 rename to t1;
|
||||
select next value for t1;
|
||||
next value for t1
|
||||
1100
|
||||
drop table t1;
|
Reference in New Issue
Block a user