~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mysql-test/extra/rpl_tests/rpl_auto_increment.test

  • Committer: brian
  • Date: 2008-06-25 05:29:13 UTC
  • Revision ID: brian@localhost.localdomain-20080625052913-6upwo0jsrl4lnapl
clean slate

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
2
# Test of auto_increment with offset
 
3
#
 
4
#####################################
 
5
# By: JBM
 
6
# Date: 2006-02-10
 
7
# Change: NDB does not support auto inc
 
8
# in this usage. Currently there is no
 
9
# plan to implment. Skipping test when
 
10
# NDB is default engine.
 
11
#####################################
 
12
-- source include/not_ndb_default.inc
 
13
-- source include/master-slave.inc
 
14
 
 
15
eval create table t1 (a int not null auto_increment,b int, primary key (a)) engine=$engine_type2 auto_increment=3;
 
16
insert into t1 values (NULL,1),(NULL,2),(NULL,3);
 
17
select * from t1;
 
18
 
 
19
sync_slave_with_master;
 
20
select * from t1;
 
21
connection master;
 
22
drop table t1;
 
23
 
 
24
eval create table t1 (a int not null auto_increment,b int, primary key (a)) engine=$engine_type2;
 
25
insert into t1 values (1,1),(NULL,2),(3,3),(NULL,4);
 
26
delete from t1 where b=4;
 
27
insert into t1 values (NULL,5),(NULL,6);
 
28
select * from t1;
 
29
 
 
30
sync_slave_with_master;
 
31
select * from t1;
 
32
connection master;
 
33
 
 
34
drop table t1;
 
35
 
 
36
set @@session.auto_increment_increment=100, @@session.auto_increment_offset=10;
 
37
show variables like "%auto_inc%";
 
38
 
 
39
eval create table t1 (a int not null auto_increment, primary key (a)) engine=$engine_type2;
 
40
# Insert with 2 insert statements to get better testing of logging
 
41
insert into t1 values (NULL),(5),(NULL);
 
42
insert into t1 values (250),(NULL);
 
43
select * from t1;
 
44
insert into t1 values (1000);
 
45
set @@insert_id=400;
 
46
insert into t1 values(NULL),(NULL);
 
47
select * from t1;
 
48
 
 
49
sync_slave_with_master;
 
50
select * from t1;
 
51
connection master;
 
52
drop table t1;
 
53
 
 
54
#
 
55
# Same test with innodb (as the innodb code is a bit different)
 
56
#
 
57
eval create table t1 (a int not null auto_increment, primary key (a)) engine=$engine_type;
 
58
# Insert with 2 insert statements to get better testing of logging
 
59
insert into t1 values (NULL),(5),(NULL);
 
60
insert into t1 values (250),(NULL);
 
61
select * from t1;
 
62
insert into t1 values (1000);
 
63
set @@insert_id=400;
 
64
insert into t1 values(NULL),(NULL);
 
65
select * from t1;
 
66
 
 
67
sync_slave_with_master;
 
68
select * from t1;
 
69
connection master;
 
70
drop table t1;
 
71
 
 
72
set @@session.auto_increment_increment=1, @@session.auto_increment_offset=1;
 
73
eval create table t1 (a int not null auto_increment, primary key (a)) engine=$engine_type2;
 
74
# Insert with 2 insert statements to get better testing of logging
 
75
insert into t1 values (NULL),(5),(NULL),(NULL);
 
76
insert into t1 values (500),(NULL),(502),(NULL),(NULL);
 
77
select * from t1;
 
78
set @@insert_id=600;
 
79
--error ER_DUP_ENTRY
 
80
insert into t1 values(600),(NULL),(NULL);
 
81
set @@insert_id=600;
 
82
insert ignore into t1 values(600),(NULL),(NULL),(610),(NULL);
 
83
select * from t1;
 
84
 
 
85
sync_slave_with_master;
 
86
select * from t1;
 
87
connection master;
 
88
drop table t1;
 
89
 
 
90
#
 
91
# Test that auto-increment works when slave has rows in the table
 
92
#
 
93
set @@session.auto_increment_increment=10, @@session.auto_increment_offset=1;
 
94
 
 
95
eval create table t1 (a int not null auto_increment, primary key (a)) engine=$engine_type2;
 
96
 
 
97
sync_slave_with_master;
 
98
insert into t1 values(2),(12),(22),(32),(42);
 
99
connection master;
 
100
 
 
101
insert into t1 values (NULL),(NULL);
 
102
insert into t1 values (3),(NULL),(NULL);
 
103
select * from t1;
 
104
 
 
105
sync_slave_with_master;
 
106
select * from t1;
 
107
 
 
108
# Test for BUG#20524 "auto_increment_* not observed when inserting
 
109
# a too large value". When an autogenerated value was bigger than the
 
110
# maximum possible value of the field, it was truncated to that max
 
111
# possible value, without being "rounded down" to still honour
 
112
# auto_increment_* variables.
 
113
 
 
114
connection master;
 
115
drop table t1;
 
116
create table t1 (a tinyint not null auto_increment primary key) engine=myisam;
 
117
insert into t1 values(103);
 
118
set auto_increment_increment=11;
 
119
set auto_increment_offset=4;
 
120
insert into t1 values(null);
 
121
insert into t1 values(null);
 
122
--error ER_DUP_ENTRY
 
123
insert into t1 values(null);
 
124
select a, mod(a-@@auto_increment_offset,@@auto_increment_increment) from t1 order by a;
 
125
 
 
126
# same but with a larger value
 
127
create table t2 (a tinyint unsigned not null auto_increment primary key) engine=myisam;
 
128
set auto_increment_increment=10;
 
129
set auto_increment_offset=1;
 
130
set insert_id=1000;
 
131
insert into t2 values(null);
 
132
select a, mod(a-@@auto_increment_offset,@@auto_increment_increment) from t2 order by a;
 
133
 
 
134
# An offset so big that even first value does not fit
 
135
create table t3 like t1;
 
136
set auto_increment_increment=1000;
 
137
set auto_increment_offset=700;
 
138
insert into t3 values(null);
 
139
select * from t3 order by a;
 
140
sync_slave_with_master;
 
141
select * from t1 order by a;
 
142
select * from t2 order by a;
 
143
select * from t3 order by a;
 
144
 
 
145
connection master;
 
146
 
 
147
drop table t1,t2,t3;
 
148
 
 
149
# End cleanup
 
150
sync_slave_with_master;