summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/sql_sequence/lock.test
blob: 1cb6aa6fb54cceecf3979d3cf6af0ebdf395ca94 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
--source include/have_sequence.inc
--source include/have_innodb.inc

--disable_warnings
drop table if exists s1, t1, t2;
--enable_warnings

#
# MDEV-14831 CREATE OR REPLACE SEQUENCE under LOCK TABLE corrupts the
# sequence, causes ER_KEY_NOT_FOUND
#
CREATE SEQUENCE s1;
create table t1 (a int);
create table t2 (a int);
LOCK TABLE s1 WRITE, t1 write;
create or replace sequence s1;
select * from s1;
select * from t1;
--error ER_TABLE_NOT_LOCKED
select * from t2;
unlock tables;
select * from t1;
select * from t2;
drop tables s1, t1, t2;

#
# MDEV-15742 Assertion `table_share->tmp_table != NO_TMP_TABLE ||
# m_lock_type == 1' failed in handler::ha_write_row
#

CREATE SEQUENCE s1;
LOCK TABLE s1 READ;
--error ER_TABLE_NOT_LOCKED_FOR_WRITE
SELECT NEXTVAL(s1);
--error ER_TABLE_NOT_LOCKED
SELECT NEXTVAL(s);
--error ER_TABLE_NOT_LOCKED_FOR_WRITE
DROP SEQUENCE s1;
unlock tables;
DROP SEQUENCE s1;

#
# MDEV-15106 Unexpected ER_WRONG_INSERT_INTO_SEQUENCE upon INSERT with
# multiple locks on sequences
#

CREATE SEQUENCE seq1;
CREATE SEQUENCE seq2;
LOCK TABLE seq1 WRITE, seq2 WRITE;
INSERT INTO seq1 VALUES (1, 1, 100000, 1, 1, 100, 1, 1);
DROP SEQUENCE seq1, seq2;

#
# MDEV-15970
# Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failure and/or
# ER_KEY_NOT_FOUND upon TRUNCATE sequence under lock
#

CREATE OR REPLACE SEQUENCE s1 ENGINE=MyISAM;
LOCK TABLE s1 WRITE;
--error ER_ILLEGAL_HA
TRUNCATE TABLE s1;
# Cleanup
DROP SEQUENCE s1;