3
# Test that queries referencing variables are replicated correctly in
4
# mixed and row-based logging mode.
9
# The test simply does a lot of "INSERT INTO t1 VALUES (@@variable)"
10
# and checks the result on the slave.
12
# Statements referencing a variable only replicate correctly in mixed
13
# and row mode: in row mode, the values inserted are replicated. In
14
# mixed mode, statements referencing a variable are marked as unsafe,
15
# meaning they will be replicated by row. In statement mode, the
16
# slave's value will be used and replication will break. (Except in a
17
# small number of special cases: random seeds, insert_id, and
18
# auto_increment are replicated).
20
# We test the following variable scopes:
21
# - server system variables
22
# - server session variables
23
# - server "both" variables
26
# For each scope, we use variables of the following types if they
31
# - enumeration variables
33
# We use these types of variables in the following contexts:
35
# - from a stored procedure
36
# - from a stored function
38
# - from a prepared statement
40
# For all variables where it is possible, we set the variable to one
41
# value on slave, and insert it on the master with two distinct
44
# The same insertions are made in four different tables using direct
45
# insert, stored procedure, stored function, or trigger. Then all
46
# eight resulting tables on master and slave are compared.
49
# ==== Related bugs ====
51
# BUG#31168: @@hostname does not replicate
54
# ==== Related test cases ====
56
# binlog.binlog_unsafe tests that a warning is issued if system
57
# variables are replicated in statement mode.
59
# rpl.rpl_variables_stm tests the small subset of variables that
60
# actually can be replicated safely in statement mode.
63
source include/master-slave.inc;
64
source include/have_binlog_format_mixed_or_row.inc;
67
--echo ==== Initialization ====
69
# Backup the values of global variables so that they can be restored
73
SET @m_default_week_format= @@global.default_week_format;
74
SET @m_init_slave= @@global.init_slave;
75
SET @m_lc_time_names= @@global.lc_time_names;
76
SET @m_low_priority_updates= @@global.low_priority_updates;
77
SET @m_relay_log_purge= @@global.relay_log_purge;
78
SET @m_slave_exec_mode= @@global.slave_exec_mode;
79
SET @m_sql_mode= @@global.sql_mode;
80
SET @m_sync_binlog= @@global.sync_binlog;
84
SET @s_default_week_format= @@global.default_week_format;
85
SET @s_init_slave= @@global.init_slave;
86
SET @s_lc_time_names= @@global.lc_time_names;
87
SET @s_low_priority_updates= @@global.low_priority_updates;
88
SET @s_relay_log_purge= @@global.relay_log_purge;
89
SET @s_slave_exec_mode= @@global.slave_exec_mode;
90
SET @s_sql_mode= @@global.sql_mode;
91
SET @s_sync_binlog= @@global.sync_binlog;
93
# Set global variables on slave to something different than on master.
94
SET @@global.relay_log_purge = OFF;
95
SET @@global.sync_binlog = 1000000;
96
SET @@global.slave_exec_mode = 'STRICT';
97
SET @@sql_big_selects = OFF;
98
SET @@last_insert_id = 10;
99
SET @@global.low_priority_updates = OFF;
100
SET @@local.low_priority_updates = OFF;
101
SET @@global.default_week_format = 1;
102
SET @@local.default_week_format = 2;
103
SET @@global.lc_time_names = 'zh_HK';
104
SET @@local.lc_time_names = 'zh_TW';
105
SET @@global.sql_mode = 'ALLOW_INVALID_DATES';
106
SET @@local.sql_mode = 'ANSI_QUOTES,ERROR_FOR_DIVISION_BY_ZERO,HIGH_NOT_PRECEDENCE';
108
SET @user_text = 'Alunda';
110
# Stop slave so that we get a fresh sql thread, reading the slave's
111
# global values of variables into its local copies.
114
source include/reset_master_and_slave.inc;
116
# We would have wanted to set this together with the other variables
117
# above, but can't because it affects how the slave works.
120
SET @@global.init_slave = 'ant';
126
# Tables where everything happens.
127
CREATE TABLE tstmt (id INT AUTO_INCREMENT PRIMARY KEY,
131
CREATE TABLE tproc LIKE tstmt;
132
CREATE TABLE tfunc LIKE tstmt;
133
CREATE TABLE ttrig LIKE tstmt;
134
CREATE TABLE tprep LIKE tstmt;
136
# Table on which we put a trigger.
137
CREATE TABLE trigger_table (text CHAR(4));
140
--echo ==== Insert variables directly ====
142
--echo ---- global variables ----
145
SET @@global.relay_log_purge = ON;
146
INSERT INTO tstmt(truth) VALUES (@@global.relay_log_purge);
147
SET @@global.relay_log_purge = OFF;
148
INSERT INTO tstmt(truth) VALUES (@@global.relay_log_purge);
151
SET @@global.sync_binlog = 2000000;
152
INSERT INTO tstmt(num) VALUES (@@global.sync_binlog);
153
SET @@global.sync_binlog = 3000000;
154
INSERT INTO tstmt(num) VALUES (@@global.sync_binlog);
157
SET @@global.init_slave = 'bison';
158
INSERT INTO tstmt(text) VALUES (@@global.init_slave);
159
SET @@global.init_slave = 'cat';
160
INSERT INTO tstmt(text) VALUES (@@global.init_slave);
163
SET @@global.slave_exec_mode = 'IDEMPOTENT';
164
INSERT INTO tstmt(text) VALUES (@@global.slave_exec_mode);
165
SET @@global.slave_exec_mode = 'STRICT';
166
INSERT INTO tstmt(text) VALUES (@@global.slave_exec_mode);
169
--echo ---- session variables ----
172
SET @@sql_big_selects = ON;
173
INSERT INTO tstmt(truth) VALUES (@@sql_big_selects);
174
SET @@sql_big_selects = OFF;
175
INSERT INTO tstmt(truth) VALUES (@@sql_big_selects);
178
SET @@last_insert_id = 20;
179
INSERT INTO tstmt(num) VALUES (@@last_insert_id);
180
SET @@last_insert_id = 30;
181
INSERT INTO tstmt(num) VALUES (@@last_insert_id);
183
--echo ---- global and session variables ----
186
SET @@global.low_priority_updates = ON;
187
SET @@local.low_priority_updates = OFF;
188
INSERT INTO tstmt(truth) VALUES (@@global.low_priority_updates);
189
INSERT INTO tstmt(truth) VALUES (@@local.low_priority_updates);
190
SET @@global.low_priority_updates = OFF;
191
SET @@local.low_priority_updates = ON;
192
INSERT INTO tstmt(truth) VALUES (@@global.low_priority_updates);
193
INSERT INTO tstmt(truth) VALUES (@@local.low_priority_updates);
196
SET @@global.default_week_format = 3;
197
SET @@local.default_week_format = 4;
198
INSERT INTO tstmt(num) VALUES (@@global.default_week_format);
199
INSERT INTO tstmt(num) VALUES (@@local.default_week_format);
200
SET @@global.default_week_format = 5;
201
SET @@local.default_week_format = 6;
202
INSERT INTO tstmt(num) VALUES (@@global.default_week_format);
203
INSERT INTO tstmt(num) VALUES (@@local.default_week_format);
206
SET @@global.lc_time_names = 'sv_SE';
207
SET @@local.lc_time_names = 'sv_FI';
208
INSERT INTO tstmt(text) VALUES (@@global.lc_time_names);
209
INSERT INTO tstmt(text) VALUES (@@local.lc_time_names);
210
SET @@global.lc_time_names = 'ar_TN';
211
SET @@local.lc_time_names = 'ar_IQ';
212
INSERT INTO tstmt(text) VALUES (@@global.lc_time_names);
213
INSERT INTO tstmt(text) VALUES (@@local.lc_time_names);
216
SET @@global.sql_mode = '';
217
SET @@local.sql_mode = 'IGNORE_SPACE,NO_AUTO_CREATE_USER';
218
INSERT INTO tstmt(text) VALUES (@@global.sql_mode);
219
INSERT INTO tstmt(text) VALUES (@@local.sql_mode);
220
SET @@global.sql_mode = 'NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION';
221
SET @@local.sql_mode = 'NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS';
222
INSERT INTO tstmt(text) VALUES (@@global.sql_mode);
223
INSERT INTO tstmt(text) VALUES (@@local.sql_mode);
225
--echo ---- user variables ----
229
INSERT INTO tstmt(num) VALUES (@user_num);
231
INSERT INTO tstmt(num) VALUES (@user_num);
234
SET @user_text = 'Bergsbrunna';
235
INSERT INTO tstmt(text) VALUES (@user_text);
236
SET @user_text = 'Centrum';
237
INSERT INTO tstmt(text) VALUES (@user_text);
240
--echo ==== Insert variables from a stored procedure ====
243
CREATE PROCEDURE proc()
249
SET @@global.relay_log_purge = ON;
250
INSERT INTO tproc(truth) VALUES (@@global.relay_log_purge);
251
SET @@global.relay_log_purge = OFF;
252
INSERT INTO tproc(truth) VALUES (@@global.relay_log_purge);
255
SET @@global.sync_binlog = 2000000;
256
INSERT INTO tproc(num) VALUES (@@global.sync_binlog);
257
SET @@global.sync_binlog = 3000000;
258
INSERT INTO tproc(num) VALUES (@@global.sync_binlog);
261
SET @@global.init_slave = 'bison';
262
INSERT INTO tproc(text) VALUES (@@global.init_slave);
263
SET @@global.init_slave = 'cat';
264
INSERT INTO tproc(text) VALUES (@@global.init_slave);
267
SET @@global.slave_exec_mode = 'IDEMPOTENT';
268
INSERT INTO tproc(text) VALUES (@@global.slave_exec_mode);
269
SET @@global.slave_exec_mode = 'STRICT';
270
INSERT INTO tproc(text) VALUES (@@global.slave_exec_mode);
275
SET @@sql_big_selects = ON;
276
INSERT INTO tproc(truth) VALUES (@@sql_big_selects);
277
SET @@sql_big_selects = OFF;
278
INSERT INTO tproc(truth) VALUES (@@sql_big_selects);
281
SET @@last_insert_id = 20;
282
INSERT INTO tproc(num) VALUES (@@last_insert_id);
283
SET @@last_insert_id = 30;
284
INSERT INTO tproc(num) VALUES (@@last_insert_id);
289
SET @@global.low_priority_updates = ON;
290
SET @@local.low_priority_updates = OFF;
291
INSERT INTO tproc(truth) VALUES (@@global.low_priority_updates);
292
INSERT INTO tproc(truth) VALUES (@@local.low_priority_updates);
293
SET @@global.low_priority_updates = OFF;
294
SET @@local.low_priority_updates = ON;
295
INSERT INTO tproc(truth) VALUES (@@global.low_priority_updates);
296
INSERT INTO tproc(truth) VALUES (@@local.low_priority_updates);
299
SET @@global.default_week_format = 3;
300
SET @@local.default_week_format = 4;
301
INSERT INTO tproc(num) VALUES (@@global.default_week_format);
302
INSERT INTO tproc(num) VALUES (@@local.default_week_format);
303
SET @@global.default_week_format = 5;
304
SET @@local.default_week_format = 6;
305
INSERT INTO tproc(num) VALUES (@@global.default_week_format);
306
INSERT INTO tproc(num) VALUES (@@local.default_week_format);
309
SET @@global.lc_time_names = 'sv_SE';
310
SET @@local.lc_time_names = 'sv_FI';
311
INSERT INTO tproc(text) VALUES (@@global.lc_time_names);
312
INSERT INTO tproc(text) VALUES (@@local.lc_time_names);
313
SET @@global.lc_time_names = 'ar_TN';
314
SET @@local.lc_time_names = 'ar_IQ';
315
INSERT INTO tproc(text) VALUES (@@global.lc_time_names);
316
INSERT INTO tproc(text) VALUES (@@local.lc_time_names);
319
SET @@global.sql_mode = '';
320
SET @@local.sql_mode = 'IGNORE_SPACE,NO_AUTO_CREATE_USER';
321
INSERT INTO tproc(text) VALUES (@@global.sql_mode);
322
INSERT INTO tproc(text) VALUES (@@local.sql_mode);
323
SET @@global.sql_mode = 'NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION';
324
SET @@local.sql_mode = 'NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS';
325
INSERT INTO tproc(text) VALUES (@@global.sql_mode);
326
INSERT INTO tproc(text) VALUES (@@local.sql_mode);
332
INSERT INTO tproc(num) VALUES (@user_num);
334
INSERT INTO tproc(num) VALUES (@user_num);
337
SET @user_text = 'Bergsbrunna';
338
INSERT INTO tproc(text) VALUES (@user_text);
339
SET @user_text = 'Centrum';
340
INSERT INTO tproc(text) VALUES (@user_text);
348
--echo ==== Insert variables from a stored function ====
351
CREATE FUNCTION func()
358
SET @@global.relay_log_purge = ON;
359
INSERT INTO tfunc(truth) VALUES (@@global.relay_log_purge);
360
SET @@global.relay_log_purge = OFF;
361
INSERT INTO tfunc(truth) VALUES (@@global.relay_log_purge);
364
SET @@global.sync_binlog = 2000000;
365
INSERT INTO tfunc(num) VALUES (@@global.sync_binlog);
366
SET @@global.sync_binlog = 3000000;
367
INSERT INTO tfunc(num) VALUES (@@global.sync_binlog);
370
SET @@global.init_slave = 'bison';
371
INSERT INTO tfunc(text) VALUES (@@global.init_slave);
372
SET @@global.init_slave = 'cat';
373
INSERT INTO tfunc(text) VALUES (@@global.init_slave);
376
SET @@global.slave_exec_mode = 'IDEMPOTENT';
377
INSERT INTO tfunc(text) VALUES (@@global.slave_exec_mode);
378
SET @@global.slave_exec_mode = 'STRICT';
379
INSERT INTO tfunc(text) VALUES (@@global.slave_exec_mode);
384
SET @@sql_big_selects = ON;
385
INSERT INTO tfunc(truth) VALUES (@@sql_big_selects);
386
SET @@sql_big_selects = OFF;
387
INSERT INTO tfunc(truth) VALUES (@@sql_big_selects);
390
SET @@last_insert_id = 20;
391
INSERT INTO tfunc(num) VALUES (@@last_insert_id);
392
SET @@last_insert_id = 30;
393
INSERT INTO tfunc(num) VALUES (@@last_insert_id);
398
SET @@global.low_priority_updates = ON;
399
SET @@local.low_priority_updates = OFF;
400
INSERT INTO tfunc(truth) VALUES (@@global.low_priority_updates);
401
INSERT INTO tfunc(truth) VALUES (@@local.low_priority_updates);
402
SET @@global.low_priority_updates = OFF;
403
SET @@local.low_priority_updates = ON;
404
INSERT INTO tfunc(truth) VALUES (@@global.low_priority_updates);
405
INSERT INTO tfunc(truth) VALUES (@@local.low_priority_updates);
408
SET @@global.default_week_format = 3;
409
SET @@local.default_week_format = 4;
410
INSERT INTO tfunc(num) VALUES (@@global.default_week_format);
411
INSERT INTO tfunc(num) VALUES (@@local.default_week_format);
412
SET @@global.default_week_format = 5;
413
SET @@local.default_week_format = 6;
414
INSERT INTO tfunc(num) VALUES (@@global.default_week_format);
415
INSERT INTO tfunc(num) VALUES (@@local.default_week_format);
418
SET @@global.lc_time_names = 'sv_SE';
419
SET @@local.lc_time_names = 'sv_FI';
420
INSERT INTO tfunc(text) VALUES (@@global.lc_time_names);
421
INSERT INTO tfunc(text) VALUES (@@local.lc_time_names);
422
SET @@global.lc_time_names = 'ar_TN';
423
SET @@local.lc_time_names = 'ar_IQ';
424
INSERT INTO tfunc(text) VALUES (@@global.lc_time_names);
425
INSERT INTO tfunc(text) VALUES (@@local.lc_time_names);
428
SET @@global.sql_mode = '';
429
SET @@local.sql_mode = 'IGNORE_SPACE,NO_AUTO_CREATE_USER';
430
INSERT INTO tfunc(text) VALUES (@@global.sql_mode);
431
INSERT INTO tfunc(text) VALUES (@@local.sql_mode);
432
SET @@global.sql_mode = 'NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION';
433
SET @@local.sql_mode = 'NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS';
434
INSERT INTO tfunc(text) VALUES (@@global.sql_mode);
435
INSERT INTO tfunc(text) VALUES (@@local.sql_mode);
441
INSERT INTO tfunc(num) VALUES (@user_num);
443
INSERT INTO tfunc(num) VALUES (@user_num);
446
SET @user_text = 'Bergsbrunna';
447
INSERT INTO tfunc(text) VALUES (@user_text);
448
SET @user_text = 'Centrum';
449
INSERT INTO tfunc(text) VALUES (@user_text);
458
--echo ==== Insert variables from a trigger ====
462
BEFORE INSERT ON trigger_table
469
SET @@global.relay_log_purge = ON;
470
INSERT INTO ttrig(truth) VALUES (@@global.relay_log_purge);
471
SET @@global.relay_log_purge = OFF;
472
INSERT INTO ttrig(truth) VALUES (@@global.relay_log_purge);
475
SET @@global.sync_binlog = 2000000;
476
INSERT INTO ttrig(num) VALUES (@@global.sync_binlog);
477
SET @@global.sync_binlog = 3000000;
478
INSERT INTO ttrig(num) VALUES (@@global.sync_binlog);
481
SET @@global.init_slave = 'bison';
482
INSERT INTO ttrig(text) VALUES (@@global.init_slave);
483
SET @@global.init_slave = 'cat';
484
INSERT INTO ttrig(text) VALUES (@@global.init_slave);
487
SET @@global.slave_exec_mode = 'IDEMPOTENT';
488
INSERT INTO ttrig(text) VALUES (@@global.slave_exec_mode);
489
SET @@global.slave_exec_mode = 'STRICT';
490
INSERT INTO ttrig(text) VALUES (@@global.slave_exec_mode);
495
SET @@sql_big_selects = ON;
496
INSERT INTO ttrig(truth) VALUES (@@sql_big_selects);
497
SET @@sql_big_selects = OFF;
498
INSERT INTO ttrig(truth) VALUES (@@sql_big_selects);
501
SET @@last_insert_id = 20;
502
INSERT INTO ttrig(num) VALUES (@@last_insert_id);
503
SET @@last_insert_id = 30;
504
INSERT INTO ttrig(num) VALUES (@@last_insert_id);
509
SET @@global.low_priority_updates = ON;
510
SET @@local.low_priority_updates = OFF;
511
INSERT INTO ttrig(truth) VALUES (@@global.low_priority_updates);
512
INSERT INTO ttrig(truth) VALUES (@@local.low_priority_updates);
513
SET @@global.low_priority_updates = OFF;
514
SET @@local.low_priority_updates = ON;
515
INSERT INTO ttrig(truth) VALUES (@@global.low_priority_updates);
516
INSERT INTO ttrig(truth) VALUES (@@local.low_priority_updates);
519
SET @@global.default_week_format = 3;
520
SET @@local.default_week_format = 4;
521
INSERT INTO ttrig(num) VALUES (@@global.default_week_format);
522
INSERT INTO ttrig(num) VALUES (@@local.default_week_format);
523
SET @@global.default_week_format = 5;
524
SET @@local.default_week_format = 6;
525
INSERT INTO ttrig(num) VALUES (@@global.default_week_format);
526
INSERT INTO ttrig(num) VALUES (@@local.default_week_format);
529
SET @@global.lc_time_names = 'sv_SE';
530
SET @@local.lc_time_names = 'sv_FI';
531
INSERT INTO ttrig(text) VALUES (@@global.lc_time_names);
532
INSERT INTO ttrig(text) VALUES (@@local.lc_time_names);
533
SET @@global.lc_time_names = 'ar_TN';
534
SET @@local.lc_time_names = 'ar_IQ';
535
INSERT INTO ttrig(text) VALUES (@@global.lc_time_names);
536
INSERT INTO ttrig(text) VALUES (@@local.lc_time_names);
539
SET @@global.sql_mode = '';
540
SET @@local.sql_mode = 'IGNORE_SPACE,NO_AUTO_CREATE_USER';
541
INSERT INTO ttrig(text) VALUES (@@global.sql_mode);
542
INSERT INTO ttrig(text) VALUES (@@local.sql_mode);
543
SET @@global.sql_mode = 'NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION';
544
SET @@local.sql_mode = 'NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS';
545
INSERT INTO ttrig(text) VALUES (@@global.sql_mode);
546
INSERT INTO ttrig(text) VALUES (@@local.sql_mode);
552
INSERT INTO ttrig(num) VALUES (@user_num);
554
INSERT INTO ttrig(num) VALUES (@user_num);
557
SET @user_text = 'Bergsbrunna';
558
INSERT INTO ttrig(text) VALUES (@user_text);
559
SET @user_text = 'Centrum';
560
INSERT INTO ttrig(text) VALUES (@user_text);
564
INSERT INTO trigger_table VALUES ('bye.');
567
--echo ==== Insert variables from a prepared statement ====
572
PREPARE p1 FROM 'SET @@global.relay_log_purge = ON';
573
PREPARE p2 FROM 'INSERT INTO tprep(truth) VALUES (@@global.relay_log_purge)';
574
PREPARE p3 FROM 'SET @@global.relay_log_purge = OFF';
575
PREPARE p4 FROM 'INSERT INTO tprep(truth) VALUES (@@global.relay_log_purge)';
578
PREPARE p5 FROM 'SET @@global.sync_binlog = 2000000';
579
PREPARE p6 FROM 'INSERT INTO tprep(num) VALUES (@@global.sync_binlog)';
580
PREPARE p7 FROM 'SET @@global.sync_binlog = 3000000';
581
PREPARE p8 FROM 'INSERT INTO tprep(num) VALUES (@@global.sync_binlog)';
584
PREPARE p9 FROM 'SET @@global.init_slave = \'bison\'';
585
PREPARE p10 FROM 'INSERT INTO tprep(text) VALUES (@@global.init_slave)';
586
PREPARE p11 FROM 'SET @@global.init_slave = \'cat\'';
587
PREPARE p12 FROM 'INSERT INTO tprep(text) VALUES (@@global.init_slave)';
590
PREPARE p13 FROM 'SET @@global.slave_exec_mode = \'IDEMPOTENT\'';
591
PREPARE p14 FROM 'INSERT INTO tprep(text) VALUES (@@global.slave_exec_mode)';
592
PREPARE p15 FROM 'SET @@global.slave_exec_mode = \'STRICT\'';
593
PREPARE p16 FROM 'INSERT INTO tprep(text) VALUES (@@global.slave_exec_mode)';
598
PREPARE p17 FROM 'SET @@sql_big_selects = ON';
599
PREPARE p18 FROM 'INSERT INTO tprep(truth) VALUES (@@sql_big_selects)';
600
PREPARE p19 FROM 'SET @@sql_big_selects = OFF';
601
PREPARE p20 FROM 'INSERT INTO tprep(truth) VALUES (@@sql_big_selects)';
604
PREPARE p21 FROM 'SET @@last_insert_id = 20';
605
PREPARE p22 FROM 'INSERT INTO tprep(num) VALUES (@@last_insert_id)';
606
PREPARE p23 FROM 'SET @@last_insert_id = 30';
607
PREPARE p24 FROM 'INSERT INTO tprep(num) VALUES (@@last_insert_id)';
612
PREPARE p25 FROM 'SET @@global.low_priority_updates = ON';
613
PREPARE p26 FROM 'SET @@local.low_priority_updates = OFF';
614
PREPARE p27 FROM 'INSERT INTO tprep(truth) VALUES (@@global.low_priority_updates)';
615
PREPARE p28 FROM 'INSERT INTO tprep(truth) VALUES (@@local.low_priority_updates)';
616
PREPARE p29 FROM 'SET @@global.low_priority_updates = OFF';
617
PREPARE p30 FROM 'SET @@local.low_priority_updates = ON';
618
PREPARE p31 FROM 'INSERT INTO tprep(truth) VALUES (@@global.low_priority_updates)';
619
PREPARE p32 FROM 'INSERT INTO tprep(truth) VALUES (@@local.low_priority_updates)';
622
PREPARE p33 FROM 'SET @@global.default_week_format = 3';
623
PREPARE p34 FROM 'SET @@local.default_week_format = 4';
624
PREPARE p35 FROM 'INSERT INTO tprep(num) VALUES (@@global.default_week_format)';
625
PREPARE p36 FROM 'INSERT INTO tprep(num) VALUES (@@local.default_week_format)';
626
PREPARE p37 FROM 'SET @@global.default_week_format = 5';
627
PREPARE p38 FROM 'SET @@local.default_week_format = 6';
628
PREPARE p39 FROM 'INSERT INTO tprep(num) VALUES (@@global.default_week_format)';
629
PREPARE p40 FROM 'INSERT INTO tprep(num) VALUES (@@local.default_week_format)';
632
PREPARE p41 FROM 'SET @@global.lc_time_names = \'sv_SE\'';
633
PREPARE p42 FROM 'SET @@local.lc_time_names = \'sv_FI\'';
634
PREPARE p43 FROM 'INSERT INTO tprep(text) VALUES (@@global.lc_time_names)';
635
PREPARE p44 FROM 'INSERT INTO tprep(text) VALUES (@@local.lc_time_names)';
636
PREPARE p45 FROM 'SET @@global.lc_time_names = \'ar_TN\'';
637
PREPARE p46 FROM 'SET @@local.lc_time_names = \'ar_IQ\'';
638
PREPARE p47 FROM 'INSERT INTO tprep(text) VALUES (@@global.lc_time_names)';
639
PREPARE p48 FROM 'INSERT INTO tprep(text) VALUES (@@local.lc_time_names)';
642
PREPARE p49 FROM 'SET @@global.sql_mode = \'\'';
643
PREPARE p50 FROM 'SET @@local.sql_mode = \'IGNORE_SPACE,NO_AUTO_CREATE_USER\'';
644
PREPARE p51 FROM 'INSERT INTO tprep(text) VALUES (@@global.sql_mode)';
645
PREPARE p52 FROM 'INSERT INTO tprep(text) VALUES (@@local.sql_mode)';
646
PREPARE p53 FROM 'SET @@global.sql_mode = \'NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION\'';
647
PREPARE p54 FROM 'SET @@local.sql_mode = \'NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS\'';
648
PREPARE p55 FROM 'INSERT INTO tprep(text) VALUES (@@global.sql_mode)';
649
PREPARE p56 FROM 'INSERT INTO tprep(text) VALUES (@@local.sql_mode)';
654
PREPARE p57 FROM 'SET @user_num = 20';
655
PREPARE p58 FROM 'INSERT INTO tprep(num) VALUES (@user_num)';
656
PREPARE p59 FROM 'SET @user_num = 30';
657
PREPARE p60 FROM 'INSERT INTO tprep(num) VALUES (@user_num)';
660
PREPARE p61 FROM 'SET @user_text = \'Bergsbrunna\'';
661
PREPARE p62 FROM 'INSERT INTO tprep(text) VALUES (@user_text)';
662
PREPARE p63 FROM 'SET @user_text = \'Centrum\'';
663
PREPARE p64 FROM 'INSERT INTO tprep(text) VALUES (@user_text)';
665
EXECUTE p1; EXECUTE p2; EXECUTE p3; EXECUTE p4; EXECUTE p5; EXECUTE p6;
666
EXECUTE p7; EXECUTE p8; EXECUTE p9; EXECUTE p10; EXECUTE p11; EXECUTE p12;
667
EXECUTE p13; EXECUTE p14; EXECUTE p15; EXECUTE p16; EXECUTE p17; EXECUTE p18;
668
EXECUTE p19; EXECUTE p20; EXECUTE p21; EXECUTE p22; EXECUTE p23; EXECUTE p24;
669
EXECUTE p25; EXECUTE p26; EXECUTE p27; EXECUTE p28; EXECUTE p29; EXECUTE p30;
670
EXECUTE p31; EXECUTE p32; EXECUTE p33; EXECUTE p34; EXECUTE p35; EXECUTE p36;
671
EXECUTE p37; EXECUTE p38; EXECUTE p39; EXECUTE p40; EXECUTE p41; EXECUTE p42;
672
EXECUTE p43; EXECUTE p44; EXECUTE p45; EXECUTE p46; EXECUTE p47; EXECUTE p48;
673
EXECUTE p49; EXECUTE p50; EXECUTE p51; EXECUTE p52; EXECUTE p53; EXECUTE p54;
674
EXECUTE p55; EXECUTE p56; EXECUTE p57; EXECUTE p58; EXECUTE p59; EXECUTE p60;
675
EXECUTE p61; EXECUTE p62; EXECUTE p63; EXECUTE p64;
678
--echo ==== Results ====
680
# Show the result in table test.tstmt on master...
681
SELECT * FROM tstmt ORDER BY id;
682
let $diff_table_1=master:test.tstmt;
684
# ... then compare test.tstmt on master to the other tables on master...
685
let $diff_table_2=master:test.tproc;
686
source include/diff_tables.inc;
687
let $diff_table_2=master:test.tfunc;
688
source include/diff_tables.inc;
689
let $diff_table_2=master:test.ttrig;
690
source include/diff_tables.inc;
691
let $diff_table_2=master:test.tprep;
692
source include/diff_tables.inc;
694
# ... and to all tables on slave.
696
sync_slave_with_master;
697
let $diff_table_2=slave:test.tstmt;
698
source include/diff_tables.inc;
699
let $diff_table_2=slave:test.tproc;
700
source include/diff_tables.inc;
701
let $diff_table_2=slave:test.tfunc;
702
source include/diff_tables.inc;
703
let $diff_table_2=slave:test.ttrig;
704
source include/diff_tables.inc;
705
let $diff_table_2=slave:test.tprep;
706
source include/diff_tables.inc;
709
--echo ==== Clean up ====
716
DROP TABLE tstmt, tproc, tfunc, ttrig, tprep, trigger_table;
718
SET @@global.default_week_format= @m_default_week_format;
719
SET @@global.init_slave= @m_init_slave;
720
SET @@global.lc_time_names= @m_lc_time_names;
721
SET @@global.low_priority_updates= @m_low_priority_updates;
722
SET @@global.relay_log_purge= @m_relay_log_purge;
723
SET @@global.slave_exec_mode= @m_slave_exec_mode;
724
SET @@global.sql_mode= @m_sql_mode;
725
SET @@global.sync_binlog= @m_sync_binlog;
729
SET @@global.default_week_format= @s_default_week_format;
730
SET @@global.init_slave= @s_init_slave;
731
SET @@global.lc_time_names= @s_lc_time_names;
732
SET @@global.low_priority_updates= @s_low_priority_updates;
733
SET @@global.relay_log_purge= @s_relay_log_purge;
734
SET @@global.slave_exec_mode= @s_slave_exec_mode;
735
SET @@global.sql_mode= @s_sql_mode;
736
SET @@global.sync_binlog= @s_sync_binlog;
739
sync_slave_with_master;