~drizzle-trunk/drizzle/development

1 by brian
clean slate
1
#############################################################
2
# Author: Chuck
3
#############################################################
4
# Purpose: To test having extra columns on the master WL#3915
5
# engine inspecific sourced part
6
#############################################################
7
# Change Author: Jeb
8
# Change: Cleanup and extend testing
9
#############################################################
10
# TODO: partition specific
11
# -- source include/have_partition.inc
12
# Note: Will be done in different test due to NDB using this
13
#       test case.
14
############################################################
15
16
########### Clean up ################
17
--disable_warnings
18
--disable_query_log
19
DROP TABLE IF EXISTS  t1,t2,t3,t4,t5,t10,t11,t12,t13,t14,t15,t16,t17,t18,t31;
20
--enable_query_log
21
--enable_warnings
22
23
#
24
# Setup differently defined tables on master and slave
25
#
26
27
# Def on master: t (f_1 type_m_1,... f_s type_m_s, f_s1, f_m)
28
# Def on slave:  t (f_1 type_s_1,... f_s type_s_s)
29
# where type_mi,type_si (0 < i-1 <s1) pairs are compatible types (WL#3228)
30
# Arbitrary paramaters of the test are:
31
# 1. the tables type
32
# 2. the types of the extra master's column f_s1,..., f_m
33
# 3. the numbers of common columns `s' 
34
# 4. and  extra columns `m' are par
35
#
36
# optionally
37
#
38
# 5. vary the common columns type within compatible ranges.
39
40
#
41
# constant size column type:
42
43
#BIGINT       
44
#BLOB         
45
#DATE         
46
#DATETIME     
47
#FLOAT        
48
#INT, INTEGER 
49
#LONGBLOB      
50
#LONGTEXT     
51
#MEDIUMBLOB   
52
#MEDIUMINT    
53
#MEDIUMTEXT   
54
#REAL         
55
#SMALLINT     
56
#TEXT         
57
#TIME         
58
#TIMESTAMP    
59
#TINYBLOB     
60
#TINYINT      
61
#TINYTEXT     
62
#YEAR         
63
64
# variable size column types:
65
66
#BINARY(M)    
67
#BIT(M)        
68
#CHAR(M)      
69
#DECIMAL(M,D) 
70
#DOUBLE[P]    
71
#ENUM         
72
#FLOAT(p)     
73
#NUMERIC(M,D) 
74
#SET           
75
#VARBINARY(M) 
76
#VARCHAR(M)    
77
#
78
79
let $binformat = `SHOW VARIABLES LIKE '%binlog_format%'`;
80
--echo
81
--echo ***********************************************************
82
--echo ***********************************************************
83
--echo ***************** Start of Testing ************************
84
--echo ***********************************************************
85
--echo ***********************************************************
86
--echo * This test format == $binformat and engine == $engine_type
87
--echo ***********************************************************
88
--echo ***********************************************************
89
--echo
90
--echo ***** Testing more columns on the Master *****
91
--echo
92
connection master;
93
eval CREATE TABLE t1 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
94
                      /* extra */
95
                      f5 FLOAT DEFAULT '2.00', 
96
                      f6 CHAR(4) DEFAULT 'TEST',
97
                      f7 INT DEFAULT '0',
98
                      f8 TEXT,
99
                      f9 LONGBLOB,
100
                      f10 BIT(63),
101
                      f11 VARBINARY(64))ENGINE=$engine_type;
102
--echo
103
--echo * Alter Table on Slave and drop columns f5 through f11 *
104
--echo
105
sync_slave_with_master;
106
alter table t1 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11;
107
108
--echo
109
--echo * Insert data in Master then update and delete some rows*
110
--echo
111
connection master;
112
let $j= 50;
113
--disable_query_log
114
while ($j)
115
{
116
  eval INSERT INTO t1 VALUES ($j, $j, $j, 'second', 2.0, 'kaks', 2, 
117
                              'got stolen from the paradise', 
118
                              'very fat blob', b'01010101010101', 
119
                              0x123456);
120
  dec $j;
121
}
122
let $j= 30;
123
while ($j)
124
{
125
 eval update t1 set f4= 'next' where f1=$j; 
126
 dec $j;
127
 dec $j;
128
 eval delete from t1 where f1=$j;
129
 dec $j;
130
}
131
--enable_query_log
132
133
--echo * Select count and 20 rows from Master *
134
--echo
135
SELECT COUNT(*) FROM t1;
136
--echo
137
SELECT f1,f2,f3,f4,f5,f6,f7,f8,f9,
138
       hex(f10),hex(f11) FROM t1 ORDER BY f3 LIMIT 20;
139
140
#connection slave;
141
sync_slave_with_master;
142
--echo
143
--echo * Select count and 20 rows from Slave *
144
--echo
145
SELECT COUNT(*) FROM t1;
146
--echo
147
SELECT * FROM t1 ORDER BY f3 LIMIT 20;
148
149
--echo
150
--echo * Show Slave Status *
151
--echo
152
--replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
153
--query_vertical show slave status;
154
--echo
155
156
### Altering table def scenario
157
--echo
158
--echo ***** Testing Altering table def scenario *****
159
--echo
160
161
connection master;
162
163
   eval CREATE TABLE t2 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
164
                      /* extra */
165
                       f5 DOUBLE DEFAULT '2.00', 
166
                       f6 ENUM('a', 'b', 'c') default 'a',
167
		       f7 DECIMAL(17,9) default '1000.00',
168
		       f8 MEDIUMBLOB,
169
		       f9 NUMERIC(6,4) default '2000.00',
170
		       f10 VARCHAR(1024),
171
		       f11 BINARY(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
172
		       f12 SET('a', 'b', 'c') default 'b')
173
                       ENGINE=$engine_type;
174
--echo
175
   eval CREATE TABLE t3 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
176
                      /* extra */
177
                       f5 DOUBLE DEFAULT '2.00', 
178
                       f6 ENUM('a', 'b', 'c') default 'a',
179
		       f8 MEDIUMBLOB,
180
		       f10 VARCHAR(1024),
181
		       f11 BINARY(20) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
182
		       f12 SET('a', 'b', 'c') default 'b')
183
                       ENGINE=$engine_type;
184
185
--echo
186
# no ENUM and SET
187
    eval CREATE TABLE t4 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
188
                      /* extra */
189
                       f5 DOUBLE DEFAULT '2.00', 
190
		       f6 DECIMAL(17,9) default '1000.00',
191
		       f7 MEDIUMBLOB,
192
		       f8 NUMERIC(6,4) default '2000.00',
193
		       f9 VARCHAR(1024),
194
		       f10 BINARY(20) not null default '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
195
		       f11 CHAR(255))
196
                       ENGINE=$engine_type;
197
198
--echo
199
    eval CREATE TABLE t31 (f1 INT, f2 INT, f3 INT PRIMARY KEY, f4 CHAR(20),
200
                       
201
                       /* extra */
202
203
                       f5  BIGINT,
204
                       f6  BLOB,
205
		       f7  DATE,
206
		       f8  DATETIME,
207
		       f9  FLOAT,
208
		       f10 INT,
209
		       f11 LONGBLOB,
210
		       f12 LONGTEXT,
211
		       f13 MEDIUMBLOB,
212
		       f14 MEDIUMINT,
213
		       f15 MEDIUMTEXT,
214
		       f16 REAL,
215
		       f17 SMALLINT,
216
		       f18 TEXT,
217
		       f19 TIME,
218
		       f20 TIMESTAMP,
219
		       f21 TINYBLOB,
220
		       f22 TINYINT,
221
		       f23 TINYTEXT,
222
		       f24 YEAR,
223
		       f25 BINARY(255),
224
		       f26 BIT(64),
225
		       f27 CHAR(255),
226
		       f28 DECIMAL(30,7),
227
		       f29 DOUBLE,
228
		       f30 ENUM ('a','b', 'c') default 'a',
229
		       f31 FLOAT,
230
		       f32 NUMERIC(17,9),
231
		       f33 SET ('a', 'b', 'c') default 'b',
232
		       f34 VARBINARY(1025),
233
		       f35 VARCHAR(257)       
234
                       ) ENGINE=$engine_type;
235
--echo
236
--echo ** Alter tables on slave and drop columns **
237
--echo
238
#connection slave;
239
    sync_slave_with_master;
240
    alter table t2 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11, drop
241
f12;
242
    alter table t3 drop f5, drop f6, drop f8, drop f10, drop f11, drop f12;
243
    alter table t4 drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11;
244
245
    alter table t31 
246
       drop f5, drop f6, drop f7, drop f8, drop f9, drop f10, drop f11,
247
       drop f12, drop f13, drop f14, drop f15, drop f16, drop f17, drop f18,
248
       drop f19, drop f20, drop f21, drop f22, drop f23, drop f24, drop f25,
249
       drop f26, drop f27, drop f28, drop f29, drop f30, drop f31, drop f32,
250
       drop f33, drop f34, drop f35;
251
                 
252
--echo
253
--echo ** Insert Data into Master **
254
connection master;
255
   INSERT into t2 set f1=1, f2=1, f3=1, f4='first', f8='f8: medium size blob', f10='f10:
256
some var char';
257
   INSERT into t2 values (2, 2, 2, 'second',
258
       2.0, 'b', 2000.0002, 'f8: medium size blob', 2000, 'f10: some var char',
259
'01234567', 'c'),
260
                       (3, 3, 3, 'third',
261
       3.0, 'b', 3000.0003, 'f8: medium size blob', 3000, 'f10: some var char',
262
'01234567', 'c');
263
   INSERT into t3 set f1=1, f2=1, f3=1, f4='first', f10='f10: some var char';
264
   INSERT into t4 set f1=1, f2=1, f3=1, f4='first', f7='f7: medium size blob', f10='f10:
265
binary data';
266
   INSERT into t31 set f1=1, f2=1, f3=1, f4='first';
267
   INSERT into t31 set f1=1, f2=1, f3=2, f4='second',
268
     f9=2.2,  f10='seven samurai', f28=222.222, f35='222';
269
   INSERT into t31 values (1, 1, 3, 'third',
270
      /* f5  BIGINT,  */            333333333333333333333333,
271
      /* f6  BLOB,  */              '3333333333333333333333',
272
      /* f7  DATE,  */              '2007-07-18',
273
      /* f8  DATETIME,  */          "2007-07-18",
274
      /* f9  FLOAT,  */             3.33333333,
275
      /* f10 INT,  */               333333333,
276
      /* f11 LONGBLOB,  */          '3333333333333333333',
277
      /* f12 LONGTEXT,  */          '3333333333333333333',
278
      /* f13 MEDIUMBLOB,  */        '3333333333333333333',
279
      /* f14 MEDIUMINT,  */         33,
280
      /* f15 MEDIUMTEXT,  */        3.3,
281
      /* f16 REAL,  */              3.3,
282
      /* f17 SMALLINT,  */          3,
283
      /* f18 TEXT,  */              '33',
284
      /* f19 TIME,  */              '2:59:58.999',
285
      /* f20 TIMESTAMP,  */         20000303000000,
286
      /* f21 TINYBLOB,  */          '3333',
287
      /* f22 TINYINT,  */           3,
288
      /* f23 TINYTEXT,  */          '3',
289
      /* f24 YEAR,  */              3000,
290
      /* f25 BINARY(255),  */       'three_33333',
291
      /* f26 BIT(64),  */           b'011', 
292
      /* f27 CHAR(255),  */         'three',
293
      /* f28 DECIMAL(30,7),  */     3.333,
294
      /* f29 DOUBLE,  */            3.333333333333333333333333333,
295
      /* f30 ENUM ('a','b','c')*/   'c',
296
      /* f31 FLOAT,  */             3.0,
297
      /* f32 NUMERIC(17,9),  */     3.3333,
298
      /* f33 SET ('a','b','c'),*/   'c',
299
      /*f34 VARBINARY(1025),*/      '3333 minus 3',
300
      /*f35 VARCHAR(257),*/         'three times three'
301
      );
302
   
303
   INSERT into t31 values (1, 1, 4, 'fourth',
304
       /* f5  BIGINT,  */            333333333333333333333333,
305
       /* f6  BLOB,  */              '3333333333333333333333',
306
       /* f7  DATE,  */              '2007-07-18',
307
       /* f8  DATETIME,  */          "2007-07-18",
308
       /* f9  FLOAT,  */             3.33333333,
309
       /* f10 INT,  */               333333333,
310
       /* f11 LONGBLOB,  */          '3333333333333333333',
311
       /* f12 LONGTEXT,  */          '3333333333333333333',
312
       /* f13 MEDIUMBLOB,  */        '3333333333333333333',
313
       /* f14 MEDIUMINT,  */         33,
314
       /* f15 MEDIUMTEXT,  */        3.3,
315
       /* f16 REAL,  */              3.3,
316
       /* f17 SMALLINT,  */          3,
317
       /* f18 TEXT,  */              '33',
318
       /* f19 TIME,  */              '2:59:58.999',
319
       /* f20 TIMESTAMP,  */         20000303000000,
320
       /* f21 TINYBLOB,  */          '3333',
321
       /* f22 TINYINT,  */           3,
322
       /* f23 TINYTEXT,  */          '3',
323
       /* f24 YEAR,  */              3000,
324
       /* f25 BINARY(255),  */       'three_33333',
325
       /* f26 BIT(64),  */           b'011',
326
       /* f27 CHAR(255),  */         'three',
327
       /* f28 DECIMAL(30,7),  */     3.333,
328
       /* f29 DOUBLE,  */            3.333333333333333333333333333,
329
       /* f30 ENUM ('a','b','c')*/   'c',
330
       /* f31 FLOAT,  */             3.0,
331
       /* f32 NUMERIC(17,9),  */     3.3333,
332
       /* f33 SET ('a','b','c'),*/   'c',
333
       /*f34 VARBINARY(1025),*/      '3333 minus 3',
334
       /*f35 VARCHAR(257),*/         'three times three'
335
       ),
336
   (1, 1, 5, 'fifth',
337
       /* f5  BIGINT,  */            333333333333333333333333,
338
       /* f6  BLOB,  */              '3333333333333333333333',
339
       /* f7  DATE,  */              '2007-07-18',
340
       /* f8  DATETIME,  */          "2007-07-18",
341
       /* f9  FLOAT,  */             3.33333333,
342
       /* f10 INT,  */               333333333,
343
       /* f11 LONGBLOB,  */          '3333333333333333333',
344
       /* f12 LONGTEXT,  */          '3333333333333333333',
345
       /* f13 MEDIUMBLOB,  */        '3333333333333333333',
346
       /* f14 MEDIUMINT,  */         33,
347
       /* f15 MEDIUMTEXT,  */        3.3,
348
       /* f16 REAL,  */              3.3,
349
       /* f17 SMALLINT,  */          3,
350
       /* f18 TEXT,  */              '33',
351
       /* f19 TIME,  */              '2:59:58.999',
352
       /* f20 TIMESTAMP,  */         20000303000000,
353
       /* f21 TINYBLOB,  */          '3333',
354
       /* f22 TINYINT,  */           3,
355
       /* f23 TINYTEXT,  */          '3',
356
       /* f24 YEAR,  */              3000,
357
       /* f25 BINARY(255),  */       'three_33333',
358
       /* f26 BIT(64),  */           b'011',
359
       /* f27 CHAR(255),  */         'three',
360
       /* f28 DECIMAL(30,7),  */     3.333,
361
       /* f29 DOUBLE,  */            3.333333333333333333333333333,
362
       /* f30 ENUM ('a','b','c')*/   'c',
363
       /* f31 FLOAT,  */             3.0,
364
       /* f32 NUMERIC(17,9),  */     3.3333,
365
       /* f33 SET ('a','b','c'),*/   'c',
366
       /*f34 VARBINARY(1025),*/      '3333 minus 3',
367
       /*f35 VARCHAR(257),*/         'three times three'
368
       ),
369
   (1, 1, 6, 'sixth',
370
       /* f5  BIGINT,  */            NULL,
371
       /* f6  BLOB,  */              '3333333333333333333333',
372
       /* f7  DATE,  */              '2007-07-18',
373
       /* f8  DATETIME,  */          "2007-07-18",
374
       /* f9  FLOAT,  */             3.33333333,
375
       /* f10 INT,  */               333333333,
376
       /* f11 LONGBLOB,  */          '3333333333333333333',
377
       /* f12 LONGTEXT,  */          '3333333333333333333',
378
       /* f13 MEDIUMBLOB,  */        '3333333333333333333',
379
       /* f14 MEDIUMINT,  */         33,
380
       /* f15 MEDIUMTEXT,  */        3.3,
381
       /* f16 REAL,  */              3.3,
382
       /* f17 SMALLINT,  */          3,
383
       /* f18 TEXT,  */              '33',
384
       /* f19 TIME,  */              '2:59:58.999',
385
       /* f20 TIMESTAMP,  */         20000303000000,
386
       /* f21 TINYBLOB,  */          '3333',
387
       /* f22 TINYINT,  */           3,
388
       /* f23 TINYTEXT,  */          '3',
389
       /* f24 YEAR,  */              3000,
390
       /* f25 BINARY(255),  */       'three_33333',
391
       /* f26 BIT(64),  */           b'011',
392
       /* f27 CHAR(255),  */         'three',
393
       /* f28 DECIMAL(30,7),  */     3.333,
394
       /* f29 DOUBLE,  */            3.333333333333333333333333333,
395
       /* f30 ENUM ('a','b','c')*/   'c',
396
       /* f31 FLOAT,  */             3.0,
397
       /* f32 NUMERIC(17,9),  */     3.3333,
398
       /* f33 SET ('a','b','c'),*/   'c',
399
       /*f34 VARBINARY(1025),*/      '3333 minus 3',
400
       /*f35 VARCHAR(257),*/         NULL
401
       );
402
--echo 
403
--echo ** Sync slave with master ** 
404
--echo ** Do selects from tables **
405
--echo  
406
#connection slave;
407
   sync_slave_with_master;
408
409
   select * from t1 order by f3;
410
   select * from t2 order by f1;
411
   select * from t3 order by f1;
412
   select * from t4 order by f1;
413
   select * from t31 order by f3;
414
   
415
connection master;
416
--echo
417
--echo ** Do updates master **
418
--echo
419
   update t31 set f5=555555555555555 where f3=6;
420
   update t31 set f2=2 where f3=2;
421
   update t31 set f1=NULL where f3=1;
422
   update t31 set f3=0, f27=NULL, f35='f35 new value' where f3=3;
423
424
--echo
425
--echo ** Delete from Master **
426
--echo
427
428
   delete from t1;
429
   delete from t2;
430
   delete from t3;
431
   delete from t4;
432
   delete from t31;
433
434
--echo
435
--echo ** Check slave status **
436
--echo
437
#connection slave;
438
   sync_slave_with_master;
439
   select * from t31;
440
441
--replace_result $MASTER_MYPORT MASTER_PORT
442
--replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
443
--query_vertical show slave status;
444
445
#### Clean Up ####
446
447
connection master;
448
--disable_warnings
449
--disable_query_log
450
  DROP TABLE t1,t2,t3,t4,t31;
451
452
######################################################
453
#connection slave;
454
  sync_slave_with_master;
455
--enable_query_log
456
--enable_warnings
457
--echo
458
--echo ****************************************
459
--echo * columns in master at middle of table *
460
--echo * Expect: Proper error message         *
461
--echo ****************************************
462
--echo
463
--echo ** Stop and Reset Slave **
464
--echo
465
STOP SLAVE;
466
RESET SLAVE;
467
--echo
468
--echo ** create table slave side **
469
eval CREATE TABLE t10 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
470
                       ) ENGINE=$engine_type;
471
472
--echo
473
--echo ** Connect to master and create table **
474
--echo
475
--connection master
476
eval CREATE TABLE t10 (a INT KEY, b BLOB, f DOUBLE DEFAULT '233',
477
                      c CHAR(5), e INT DEFAULT '1')ENGINE=$engine_type;
478
RESET MASTER;
479
480
--echo
481
--echo *** Start Slave ***
482
connection slave;
483
START SLAVE;
484
485
--echo
486
--echo *** Master Data Insert ***
487
connection master;
488
set @b1 = 'b1b1b1b1';
489
set @b1 = concat(@b1,@b1);
490
INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT),
491
                         (2,@b1,DEFAULT,'JOE',DEFAULT),
492
                         (3,@b1,DEFAULT,'QA',DEFAULT);
493
494
--echo
495
--echo ********************************************
496
--echo *** Expect slave to fail with Error 1523 ***
497
--echo ********************************************
498
--echo
499
connection slave;
500
wait_for_slave_to_stop;
501
--replace_result $MASTER_MYPORT MASTER_PORT
502
--replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
503
--query_vertical SHOW SLAVE STATUS
504
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
505
START SLAVE;
506
507
--echo
508
--echo *** Drop t10  ***
509
connection master;
510
DROP TABLE t10;
511
sync_slave_with_master;
512
513
############################################
514
############## Continued ###################
515
############################################
516
--echo
517
--echo *********************************************
518
--echo * More columns in master at middle of table *
519
--echo * Expect: Proper error message              *
520
--echo *********************************************
521
--echo
522
--echo  *** Create t11 on slave  ***
523
STOP SLAVE;
524
RESET SLAVE;
525
526
eval CREATE TABLE t11 (a INT PRIMARY KEY, b BLOB, c VARCHAR(254)
527
                       ) ENGINE=$engine_type;
528
529
--echo
530
--echo *** Create t11 on Master ***
531
connection master;
532
eval CREATE TABLE t11 (a INT KEY, b BLOB, f TEXT,
533
                      c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE=$engine_type;
534
535
RESET MASTER;
536
537
--echo
538
--echo *** Start Slave ***
539
connection slave;
540
START SLAVE;
541
542
--echo
543
--echo *** Master Data Insert ***
544
connection master;
545
set @b1 = 'b1b1b1b1';
546
set @b1 = concat(@b1,@b1);
547
INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT),
548
                         (2,@b1,'Testing is cool','JOE',DEFAULT),
549
                         (3,@b1,DEFAULT,'QA',DEFAULT);
550
551
--echo
552
--echo ********************************************
553
--echo *** Expect slave to fail with Error 1523 ***
554
--echo ********************************************
555
--echo
556
connection slave;
557
wait_for_slave_to_stop;
558
--replace_result $MASTER_MYPORT MASTER_PORT
559
--replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
560
--query_vertical SHOW SLAVE STATUS
561
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
562
START SLAVE;
563
564
--echo
565
--echo *** Drop t11  ***
566
connection master;
567
DROP TABLE t11;
568
sync_slave_with_master;
569
570
############################################
571
############## Continued ###################
572
############################################
573
--echo
574
--echo *********************************************
575
--echo * More columns in master at middle of table *
576
--echo * Expect: This one should pass blob-text    *
577
--echo *********************************************
578
--echo
579
--echo  *** Create t12 on slave  ***
580
STOP SLAVE;
581
RESET SLAVE;
582
eval CREATE TABLE t12 (a INT PRIMARY KEY, b BLOB, c BLOB
583
                       ) ENGINE=$engine_type;
584
585
--echo
586
--echo *** Create t12 on Master ***
587
connection master;
588
eval CREATE TABLE t12 (a INT KEY, b BLOB, f TEXT,
589
                      c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE=$engine_type;
590
591
RESET MASTER;
592
593
--echo
594
--echo *** Start Slave ***
595
connection slave;
596
START SLAVE;
597
598
--echo
599
--echo *** Master Data Insert ***
600
connection master;
601
set @b1 = 'b1b1b1b1';
602
set @b1 = concat(@b1,@b1);
603
INSERT INTO t12 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
604
                         (2,@b1,'JOE',DEFAULT,DEFAULT),
605
                         (3,@b1,'QA',DEFAULT,DEFAULT);
606
--echo
607
SELECT a,hex(b),f,c,e FROM t12 ORDER BY a;
608
609
--echo
610
--echo *** Select on Slave ***
611
sync_slave_with_master;
612
SELECT a,hex(b),c FROM t12 ORDER BY a;
613
614
--echo
615
--echo *** Drop t12  ***
616
connection master;
617
DROP TABLE t12;
618
sync_slave_with_master;
619
620
############################################
621
############## Continued ###################
622
############################################
623
--echo
624
--echo ****************************************************
625
--echo * - Alter Master adding columns at middle of table *
626
--echo *   Expect: columns added                          *
627
--echo ****************************************************
628
--echo
629
--echo
630
--echo *** Create t14 on slave  ***
631
STOP SLAVE;
632
RESET SLAVE;
633
eval CREATE TABLE t14 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
634
                       ) ENGINE=$engine_type;
635
636
--echo
637
--echo *** Create t14 on Master ***
638
connection master;
639
eval CREATE TABLE t14 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
640
                      c6 INT DEFAULT '1',
641
                      c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
642
                      )ENGINE=$engine_type;
643
644
RESET MASTER;
645
646
--echo
647
--echo *** Start Slave ***
648
connection slave;
649
START SLAVE;
650
651
--echo
652
--echo *** Master Data Insert ***
653
connection master;
654
ALTER TABLE t14 ADD COLUMN c2 DECIMAL(8,2) AFTER c1;
655
ALTER TABLE t14 ADD COLUMN c3 TEXT AFTER c2;
656
--echo
657
set @b1 = 'b1b1b1b1';
658
set @b1 = concat(@b1,@b1);
659
INSERT INTO t14 () VALUES(1,1.00,'Replication Testing Extra Col',@b1,'Kyle',DEFAULT,DEFAULT),
660
                        (2,2.00,'This Test Should work',@b1,'JOE',DEFAULT,DEFAULT),
661
                        (3,3.00,'If is does not, I will open a bug',@b1,'QA',DEFAULT,DEFAULT);
662
--echo
663
--replace_column 7 CURRENT_TIMESTAMP
664
SELECT c1,c2,c3,hex(c4),c5,c6,c7 FROM t14 ORDER BY c1;
665
666
--echo
667
--echo *** Select on Slave ****
668
sync_slave_with_master;
669
SELECT c1,c2,c3,hex(c4),c5 FROM t14 ORDER BY c1;
670
671
####################################################
672
--echo
673
--echo ****************************************************
674
--echo * - Alter Master Dropping columns from the middle. *
675
--echo *   Expect: columns dropped                        *
676
--echo ****************************************************
677
--echo
678
--echo *** connect to master and drop columns ***
679
connection master;
680
ALTER TABLE t14 DROP COLUMN c2;
681
ALTER TABLE t14 DROP COLUMN c7;
682
--echo
683
--echo *** Select from Master ***
684
SELECT c1,c3,hex(c4),c5,c6 FROM t14 ORDER BY c1;
685
--echo
686
687
--echo ************
688
--echo * Bug30415 *
689
--echo ************
690
# Uncomment below once fixed
691
692
#--echo *** Select from Slave ***
693
#sync_slave_with_master;
694
#SELECT c1,c2,c3,hex(c4),c5 FROM t14 ORDER BY c1;
695
696
# Bug30415
697
# Remove below once fixed
698
#***************************
699
connection slave;
700
wait_for_slave_to_stop;
701
--replace_result $MASTER_MYPORT MASTER_PORT
702
--replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
703
--query_vertical SHOW SLAVE STATUS
704
#***************************
705
706
STOP SLAVE;
707
RESET SLAVE;
708
709
--echo
710
--echo *** Drop t14  ***
711
DROP TABLE t14;
712
713
connection master;
714
DROP TABLE t14;
715
RESET MASTER;
716
717
connection slave;
718
START SLAVE;
719
720
#################################################
721
--echo
722
--echo *************************************************
723
--echo * - Alter Master adding columns at end of table *
724
--echo *   Expect: Error 1054                          *
725
--echo *************************************************
726
--echo
727
--echo *** Create t15 on slave  ***
728
STOP SLAVE;
729
RESET SLAVE;
730
eval CREATE TABLE t15 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
731
                       ) ENGINE=$engine_type;
732
733
--echo
734
--echo *** Create t15 on Master ***
735
connection master;
736
eval CREATE TABLE t15 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
737
                      c6 INT DEFAULT '1',
738
                      c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
739
                      )ENGINE=$engine_type;
740
741
RESET MASTER;
742
743
--echo
744
--echo *** Start Slave ***
745
connection slave;
746
START SLAVE;
747
748
--echo
749
--echo *** Master Data Insert ***
750
connection master;
751
ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7;
752
set @b1 = 'b1b1b1b1';
753
set @b1 = concat(@b1,@b1);
754
INSERT INTO t15 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT,3.00),
755
                        (2,@b1,'JOE',DEFAULT,DEFAULT,3.00),
756
                        (3,@b1,'QA',DEFAULT,DEFAULT,3.00);
757
--replace_column 5 CURRENT_TIMESTAMP
758
SELECT c1,hex(c4),c5,c6,c7,c2 FROM t15 ORDER BY c1;
759
760
--echo
761
--echo ********************************************
762
--echo *** Expect slave to fail with Error 1054 ***
763
--echo ********************************************
764
--echo
765
connection slave;
766
wait_for_slave_to_stop;
767
--replace_result $MASTER_MYPORT MASTER_PORT
768
--replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
769
--query_vertical SHOW SLAVE STATUS
770
STOP SLAVE;
771
RESET SLAVE;
772
773
--echo
774
--echo *** Drop t15  ***
775
DROP TABLE t15;
776
777
connection master;
778
DROP TABLE t15;
779
RESET MASTER;
780
781
connection slave;
782
START SLAVE;
783
784
####################################################
785
--echo
786
--echo ************************************************
787
--echo * - Create index on Master column not on slave *
788
--echo *   Expect:Warning                             *
789
--echo ************************************************
790
--echo
791
--echo *** Create t16 on slave  ***
792
STOP SLAVE;
793
RESET SLAVE;
794
eval CREATE TABLE t16 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
795
                       ) ENGINE=$engine_type;
796
797
--echo
798
--echo *** Create t16 on Master ***
799
connection master;
800
eval CREATE TABLE t16 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
801
                      c6 INT DEFAULT '1',
802
                      c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
803
                      )ENGINE=$engine_type;
804
805
RESET MASTER;
806
807
--echo
808
--echo *** Start Slave ***
809
connection slave;
810
START SLAVE;
811
812
--echo
813
--echo *** Master Create Index and Data Insert ***
814
connection master;
815
CREATE INDEX part_of_c6 ON t16 (c6);
816
set @b1 = 'b1b1b1b1';
817
set @b1 = concat(@b1,@b1);
818
INSERT INTO t16 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
819
                        (2,@b1,'JOE',2,DEFAULT),
820
                        (3,@b1,'QA',3,DEFAULT);
821
--replace_column 5 CURRENT_TIMESTAMP
822
SELECT c1,hex(c4),c5,c6,c7 FROM t16 ORDER BY c1;
823
824
# Uncomment the below when bug 30434 is patched
825
826
#--echo *** Select on Slave ****
827
#sync_slave_with_master;
828
#SELECT c1,hex(c4),c5 FROM t16 ORDER BY c1;
829
#
830
#--echo *** Drop t16  ***
831
#connection master;
832
#DROP TABLE t16;
833
#sync_slave_with_master;
834
835
# Remove the below when bug 30434 is patched
836
#*******************************************
837
--echo
838
--echo *****************
839
--echo *** BUG 30434 ***
840
--echo *****************
841
--echo
842
connection slave;
843
wait_for_slave_to_stop;
844
--replace_result $MASTER_MYPORT MASTER_PORT
845
--replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
846
--query_vertical SHOW SLAVE STATUS
847
STOP SLAVE;
848
RESET SLAVE;
849
850
--echo
851
--echo *** Drop t16  ***
852
DROP TABLE t16;
853
854
connection master;
855
DROP TABLE t16;
856
RESET MASTER;
857
858
connection slave;
859
START SLAVE;
860
#*******************************************
861
862
####################################################
863
--echo
864
--echo *****************************************************
865
--echo * - Delete rows using column on Master not on slave *
866
--echo *   Expect: Rows Deleted                            *
867
--echo *****************************************************
868
--echo
869
--echo *** Create t17 on slave  ***
870
STOP SLAVE;
871
RESET SLAVE;
872
eval CREATE TABLE t17 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
873
                       ) ENGINE=$engine_type;
874
875
--echo
876
--echo *** Create t17 on Master ***
877
connection master;
878
eval CREATE TABLE t17 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
879
                      c6 INT DEFAULT '1',
880
                      c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
881
                      )ENGINE=$engine_type;
882
883
RESET MASTER;
884
885
--echo
886
--echo *** Start Slave ***
887
connection slave;
888
START SLAVE;
889
890
--echo
891
--echo *** Master Data Insert ***
892
connection master;
893
set @b1 = 'b1b1b1b1';
894
set @b1 = concat(@b1,@b1);
895
INSERT INTO t17 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
896
                        (2,@b1,'JOE',2,DEFAULT),
897
                        (3,@b1,'QA',3,DEFAULT);
898
--replace_column 5 CURRENT_TIMESTAMP
899
SELECT c1,hex(c4),c5,c6,c7 FROM t17 ORDER BY c1;
900
901
--echo
902
--echo ** Select * from Slave **
903
sync_slave_with_master;
904
SELECT c1,hex(c4),c5 FROM t17 ORDER BY c1;
905
906
--echo
907
--echo ** Delete from master **
908
connection master;
909
DELETE FROM t17 WHERE c6 = 3;
910
--replace_column 5 CURRENT_TIMESTAMP
911
SELECT c1,hex(c4),c5,c6,c7 FROM t17 ORDER BY c1;
912
913
--echo 
914
--echo ** Check slave **
915
sync_slave_with_master;
916
SELECT c1,hex(c4),c5 FROM t17 ORDER BY c1;
917
918
919
connection master;
920
DROP TABLE t17;
921
sync_slave_with_master;
922
--echo
923
924
####################################################
925
--echo
926
--echo *****************************************************
927
--echo * - Update row using column on Master not on slave *
928
--echo *   Expect: Rows updated                           *
929
--echo *****************************************************
930
--echo
931
--echo ** Bug30674 **
932
--echo
933
--echo *** Create t18 on slave  ***
934
--echo 
935
936
STOP SLAVE;
937
RESET SLAVE;
938
eval CREATE TABLE t18 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
939
                       ) ENGINE=$engine_type;
940
941
--echo
942
--echo *** Create t18 on Master ***
943
connection master;
944
eval CREATE TABLE t18 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
945
                      c6 INT DEFAULT '1',
946
                      c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
947
                      )ENGINE=$engine_type;
948
949
RESET MASTER;
950
951
--echo
952
--echo *** Start Slave ***
953
connection slave;
954
START SLAVE;
955
956
--echo
957
--echo *** Master Data Insert ***
958
connection master;
959
set @b1 = 'b1b1b1b1';
960
set @b1 = concat(@b1,@b1);
961
962
INSERT INTO t18 () VALUES(1,@b1,'Kyle',DEFAULT,DEFAULT),
963
                        (2,@b1,'JOE',2,DEFAULT),
964
                        (3,@b1,'QA',3,DEFAULT);
965
--replace_column 5 CURRENT_TIMESTAMP
966
SELECT c1,hex(c4),c5,c6,c7 FROM t18 ORDER BY c1;
967
968
--echo
969
--echo ** Select * from Slave **
970
sync_slave_with_master;
971
SELECT c1,hex(c4),c5 FROM t18 ORDER BY c1;
972
973
--echo
974
--echo ** update from master **
975
connection master;
976
UPDATE t18 SET c5 = 'TEST' WHERE c6 = 3;
977
978
--replace_column 5 CURRENT_TIMESTAMP
979
SELECT c1,hex(c4),c5,c6,c7 FROM t18 ORDER BY c1;
980
981
--echo
982
--echo ** Check slave **
983
sync_slave_with_master;
984
SELECT c1,hex(c4),c5 FROM t18 ORDER BY c1;
985
986
connection master;
987
DROP TABLE t18;
988
sync_slave_with_master;
989
--echo
990
991
####################################################
992
--echo
993
--echo *****************************************************
994
--echo * - Insert UUID  column on Master not on slave *
995
--echo *   Expect: Rows inserted                      *
996
--echo *****************************************************
997
--echo
998
--echo *** Create t5 on slave  ***
999
STOP SLAVE;
1000
RESET SLAVE;
1001
eval CREATE TABLE t5 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
1002
                       ) ENGINE=$engine_type;
1003
1004
--echo
1005
--echo *** Create t5 on Master ***
1006
connection master;
1007
eval CREATE TABLE t5 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
1008
                      c6 LONG, 
1009
                      c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
1010
                      )ENGINE=$engine_type;
1011
1012
RESET MASTER;
1013
1014
--echo
1015
--echo *** Start Slave ***
1016
connection slave;
1017
START SLAVE;
1018
1019
--echo
1020
--echo *** Master Data Insert ***
1021
connection master;
1022
set @b1 = 'b1b1b1b1';
1023
INSERT INTO t5 () VALUES(1,@b1,'Kyle',UUID(),DEFAULT),
1024
                        (2,@b1,'JOE',UUID(),DEFAULT),
1025
                        (3,@b1,'QA',UUID(),DEFAULT);
1026
--replace_column 4 UUID 5 TIME 
1027
SELECT c1,hex(c4),c5,c6,c7 FROM t5 ORDER BY c1;
1028
1029
--echo
1030
--echo ** Select * from Slave **
1031
sync_slave_with_master;
1032
SELECT c1,hex(c4),c5 FROM t5 ORDER BY c1;
1033
1034
connection master;
1035
DROP TABLE t5;
1036
sync_slave_with_master;
1037
--echo
1038
1039
# END of 5.1 tests case
1040
1041