~ubuntu-branches/ubuntu/precise/mysql-5.1/precise

« back to all changes in this revision

Viewing changes to mysql-test/suite/rpl/t/rpl_variables_stm.test

  • Committer: Bazaar Package Importer
  • Author(s): Norbert Tretkowski
  • Date: 2010-03-17 14:56:02 UTC
  • Revision ID: james.westby@ubuntu.com-20100317145602-x7e30l1b2sb5s6w6
Tags: upstream-5.1.45
ImportĀ upstreamĀ versionĀ 5.1.45

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# ==== Purpose ====
 
2
#
 
3
# In general, queries referencing @@system_variables are not
 
4
# considered safe to write to the binlog in statement-based logging
 
5
# mode.  However, a few special cases are supported.
 
6
#
 
7
# This test verifies that queries referencing these specially
 
8
# supported variables are replicated correctly in statement mode.
 
9
#
 
10
#
 
11
# ==== Method ====
 
12
#
 
13
# The test simply does a lot of "INSERT INTO t1 VALUES (@@variable)"
 
14
# and checks the result on the slave.
 
15
#
 
16
# Statements referencing a variable only replicate correctly in mixed
 
17
# and row mode: in row mode, the values inserted are replicated.  In
 
18
# mixed mode, statements referencing a variable are marked as unsafe,
 
19
# meaning they will be replicated by row.  In statement mode, the
 
20
# slave's value will be used and replication will break. (Except in a
 
21
# small number of special cases: random seeds, insert_id, and
 
22
# auto_increment are replicated).
 
23
#
 
24
# We test all replicated variables, from each of the following
 
25
# contexts:
 
26
#  - directly
 
27
#  - from a stored procedure
 
28
#  - from a stored function
 
29
#  - from a trigger
 
30
#  - from a prepared statement
 
31
#
 
32
# For all variables where it is possible, we set the variable to one
 
33
# value on slave, and insert it on the master with two distinct
 
34
# values.
 
35
#
 
36
# The same insertions are made in four different tables using direct
 
37
# insert, stored procedure, stored function, or trigger.  Then all
 
38
# eight resulting tables on master and slave are compared.
 
39
#
 
40
#
 
41
# ==== Related bugs ====
 
42
#
 
43
# BUG#31168: @@hostname does not replicate
 
44
#
 
45
#
 
46
# ==== Related test cases ====
 
47
#
 
48
# binlog.binlog_unsafe tests that a warning is issued if system
 
49
# variables are replicated in statement mode.
 
50
#
 
51
# rpl.rpl_variables verifies that variables which cannot be replicated
 
52
# safely in statement mode are replicated correctly in mixed or row
 
53
# mode.
 
54
 
 
55
source include/master-slave.inc;
 
56
source include/have_binlog_format_mixed_or_statement.inc;
 
57
 
 
58
 
 
59
--echo ==== Initialization ====
 
60
 
 
61
# Backup the values of global variables so that they can be restored
 
62
# later.
 
63
 
 
64
--echo [on master]
 
65
connection master;
 
66
SET @m_pseudo_thread_id=         @@global.pseudo_thread_id;
 
67
SET @m_auto_increment_increment= @@global.auto_increment_increment;
 
68
SET @m_auto_increment_offset=    @@global.auto_increment_offset;
 
69
SET @m_character_set_client=     @@global.character_set_client;
 
70
SET @m_collation_connection=     @@global.collation_connection;
 
71
SET @m_collation_server=         @@global.collation_server;
 
72
SET @m_time_zone=                @@global.time_zone;
 
73
SET @m_lc_time_names=            @@global.lc_time_names;
 
74
SET @m_collation_database=       @@global.collation_database;
 
75
 
 
76
--echo [on slave]
 
77
connection slave;
 
78
SET @s_pseudo_thread_id=         @@global.pseudo_thread_id;
 
79
SET @s_auto_increment_increment= @@global.auto_increment_increment;
 
80
SET @s_auto_increment_offset=    @@global.auto_increment_offset;
 
81
SET @s_character_set_client=     @@global.character_set_client;
 
82
SET @s_collation_connection=     @@global.collation_connection;
 
83
SET @s_collation_server=         @@global.collation_server;
 
84
SET @s_time_zone=                @@global.time_zone;
 
85
SET @s_lc_time_names=            @@global.lc_time_names;
 
86
SET @s_collation_database=       @@global.collation_database;
 
87
 
 
88
SET @@global.pseudo_thread_id= 4711;
 
89
SET @@global.auto_increment_increment=19;
 
90
SET @@global.auto_increment_offset=4;
 
91
SET @@global.character_set_client='latin2';
 
92
SET @@global.collation_connection='latin2_bin';
 
93
SET @@global.collation_server='geostd8_general_ci';
 
94
SET @@global.time_zone='Japan';
 
95
SET @@global.lc_time_names='sv_SE';
 
96
SET @@global.collation_database='geostd8_bin';
 
97
 
 
98
--echo [on master]
 
99
connection master;
 
100
 
 
101
# Tables where everything happens.
 
102
CREATE TABLE tstmt (id INT AUTO_INCREMENT PRIMARY KEY,
 
103
                    num INT,
 
104
                    text VARCHAR(100));
 
105
CREATE TABLE tproc LIKE tstmt;
 
106
CREATE TABLE tfunc LIKE tstmt;
 
107
CREATE TABLE ttrig LIKE tstmt;
 
108
CREATE TABLE tprep LIKE tstmt;
 
109
 
 
110
# Table on which we put a trigger.
 
111
CREATE TABLE trigger_table (text CHAR(4));
 
112
 
 
113
 
 
114
--echo ==== Insert variables directly ====
 
115
 
 
116
SET @@pseudo_thread_id= 4712;
 
117
INSERT INTO tstmt(num)  VALUES (@@session.pseudo_thread_id);
 
118
SET @@pseudo_thread_id= 4713;
 
119
INSERT INTO tstmt(num)  VALUES (@@session.pseudo_thread_id);
 
120
 
 
121
SET @@foreign_key_checks= 0;
 
122
INSERT INTO tstmt(num)  VALUES (@@session.foreign_key_checks);
 
123
SET @@foreign_key_checks= 1;
 
124
INSERT INTO tstmt(num)  VALUES (@@session.foreign_key_checks);
 
125
 
 
126
SET @@sql_auto_is_null= 0;
 
127
INSERT INTO tstmt(num)  VALUES (@@session.sql_auto_is_null);
 
128
SET @@sql_auto_is_null= 1;
 
129
INSERT INTO tstmt(num)  VALUES (@@session.sql_auto_is_null);
 
130
 
 
131
SET @@unique_checks= 0;
 
132
INSERT INTO tstmt(num)  VALUES (@@session.unique_checks);
 
133
SET @@unique_checks= 1;
 
134
INSERT INTO tstmt(num)  VALUES (@@session.unique_checks);
 
135
 
 
136
SET @@auto_increment_increment= 11;
 
137
INSERT INTO tstmt(num)  VALUES (@@session.auto_increment_increment);
 
138
SET @@auto_increment_increment= 19;
 
139
INSERT INTO tstmt(num)  VALUES (@@session.auto_increment_increment);
 
140
 
 
141
SET @@auto_increment_offset= 13;
 
142
INSERT INTO tstmt(num)  VALUES (@@session.auto_increment_offset);
 
143
SET @@auto_increment_offset= 17;
 
144
INSERT INTO tstmt(num)  VALUES (@@session.auto_increment_offset);
 
145
 
 
146
# reset these as they affect the index column
 
147
SET @@auto_increment_increment= 1;
 
148
SET @@auto_increment_offset= 1;
 
149
 
 
150
SET @@character_set_client= 'cp1257';
 
151
INSERT INTO tstmt(text) VALUES (@@session.character_set_client);
 
152
SET @@character_set_client= 'cp1256';
 
153
INSERT INTO tstmt(text) VALUES (@@session.character_set_client);
 
154
 
 
155
SET @@collation_connection= 'cp1251_ukrainian_ci';
 
156
INSERT INTO tstmt(text) VALUES (@@session.collation_connection);
 
157
INSERT INTO tstmt(text) VALUES (@@session.character_set_connection);
 
158
SET @@collation_connection= 'cp1251_bulgarian_ci';
 
159
INSERT INTO tstmt(text) VALUES (@@session.collation_connection);
 
160
INSERT INTO tstmt(text) VALUES (@@session.character_set_connection);
 
161
 
 
162
SET @@collation_server= 'latin7_bin';
 
163
INSERT INTO tstmt(text) VALUES (@@session.collation_server);
 
164
INSERT INTO tstmt(text) VALUES (@@session.character_set_server);
 
165
SET @@collation_server= 'latin7_general_cs';
 
166
INSERT INTO tstmt(text) VALUES (@@session.collation_server);
 
167
INSERT INTO tstmt(text) VALUES (@@session.character_set_server);
 
168
 
 
169
SET @@time_zone= 'Europe/Moscow';
 
170
INSERT INTO tstmt(text) VALUES (@@session.time_zone);
 
171
SET @@time_zone= 'Universal';
 
172
INSERT INTO tstmt(text) VALUES (@@session.time_zone);
 
173
 
 
174
SET @@lc_time_names= 'sv_FI';
 
175
INSERT INTO tstmt(text) VALUES (@@session.lc_time_names);
 
176
SET @@lc_time_names= 'no_NO';
 
177
INSERT INTO tstmt(text) VALUES (@@session.lc_time_names);
 
178
 
 
179
SET @@collation_database= 'latin7_general_ci';
 
180
INSERT INTO tstmt(text) VALUES (@@session.collation_database);
 
181
INSERT INTO tstmt(text) VALUES (@@session.character_set_database);
 
182
SET @@collation_database= 'latin7_estonian_cs';
 
183
INSERT INTO tstmt(text) VALUES (@@session.collation_database);
 
184
INSERT INTO tstmt(text) VALUES (@@session.character_set_database);
 
185
 
 
186
SET @@timestamp= 47114711;
 
187
INSERT INTO tstmt(text) VALUES (@@session.timestamp);
 
188
SET @@timestamp= 47124712;
 
189
INSERT INTO tstmt(text) VALUES (@@session.timestamp);
 
190
 
 
191
SET @@last_insert_id= 1616;
 
192
INSERT INTO tstmt(text) VALUES (@@session.last_insert_id);
 
193
SET @@last_insert_id= 1717;
 
194
INSERT INTO tstmt(text) VALUES (@@session.last_insert_id);
 
195
 
 
196
 
 
197
--echo ==== Insert variables from a stored procedure ====
 
198
 
 
199
DELIMITER |;
 
200
CREATE PROCEDURE proc()
 
201
BEGIN
 
202
 
 
203
  SET @@pseudo_thread_id= 4712;
 
204
  INSERT INTO tproc(num)  VALUES (@@session.pseudo_thread_id);
 
205
  SET @@pseudo_thread_id= 4713;
 
206
  INSERT INTO tproc(num)  VALUES (@@session.pseudo_thread_id);
 
207
 
 
208
  SET @@foreign_key_checks= 0;
 
209
  INSERT INTO tproc(num)  VALUES (@@session.foreign_key_checks);
 
210
  SET @@foreign_key_checks= 1;
 
211
  INSERT INTO tproc(num)  VALUES (@@session.foreign_key_checks);
 
212
 
 
213
  SET @@sql_auto_is_null= 0;
 
214
  INSERT INTO tproc(num)  VALUES (@@session.sql_auto_is_null);
 
215
  SET @@sql_auto_is_null= 1;
 
216
  INSERT INTO tproc(num)  VALUES (@@session.sql_auto_is_null);
 
217
 
 
218
  SET @@unique_checks= 0;
 
219
  INSERT INTO tproc(num)  VALUES (@@session.unique_checks);
 
220
  SET @@unique_checks= 1;
 
221
  INSERT INTO tproc(num)  VALUES (@@session.unique_checks);
 
222
 
 
223
  SET @@auto_increment_increment= 11;
 
224
  INSERT INTO tproc(num)  VALUES (@@session.auto_increment_increment);
 
225
  SET @@auto_increment_increment= 19;
 
226
  INSERT INTO tproc(num)  VALUES (@@session.auto_increment_increment);
 
227
 
 
228
  SET @@auto_increment_offset= 13;
 
229
  INSERT INTO tproc(num)  VALUES (@@session.auto_increment_offset);
 
230
  SET @@auto_increment_offset= 17;
 
231
  INSERT INTO tproc(num)  VALUES (@@session.auto_increment_offset);
 
232
 
 
233
  # reset these as they affect the index column
 
234
  SET @@auto_increment_increment= 1;
 
235
  SET @@auto_increment_offset= 1;
 
236
 
 
237
  SET @@character_set_client= 'cp1257';
 
238
  INSERT INTO tproc(text) VALUES (@@session.character_set_client);
 
239
  SET @@character_set_client= 'cp1256';
 
240
  INSERT INTO tproc(text) VALUES (@@session.character_set_client);
 
241
 
 
242
  SET @@collation_connection= 'cp1251_ukrainian_ci';
 
243
  INSERT INTO tproc(text) VALUES (@@session.collation_connection);
 
244
  INSERT INTO tproc(text) VALUES (@@session.character_set_connection);
 
245
  SET @@collation_connection= 'cp1251_bulgarian_ci';
 
246
  INSERT INTO tproc(text) VALUES (@@session.collation_connection);
 
247
  INSERT INTO tproc(text) VALUES (@@session.character_set_connection);
 
248
 
 
249
  SET @@collation_server= 'latin7_bin';
 
250
  INSERT INTO tproc(text) VALUES (@@session.collation_server);
 
251
  INSERT INTO tproc(text) VALUES (@@session.character_set_server);
 
252
  SET @@collation_server= 'latin7_general_cs';
 
253
  INSERT INTO tproc(text) VALUES (@@session.collation_server);
 
254
  INSERT INTO tproc(text) VALUES (@@session.character_set_server);
 
255
 
 
256
  SET @@time_zone= 'Europe/Moscow';
 
257
  INSERT INTO tproc(text) VALUES (@@session.time_zone);
 
258
  SET @@time_zone= 'Universal';
 
259
  INSERT INTO tproc(text) VALUES (@@session.time_zone);
 
260
 
 
261
  SET @@lc_time_names= 'sv_FI';
 
262
  INSERT INTO tproc(text) VALUES (@@session.lc_time_names);
 
263
  SET @@lc_time_names= 'no_NO';
 
264
  INSERT INTO tproc(text) VALUES (@@session.lc_time_names);
 
265
 
 
266
  SET @@collation_database= 'latin7_general_ci';
 
267
  INSERT INTO tproc(text) VALUES (@@session.collation_database);
 
268
  INSERT INTO tproc(text) VALUES (@@session.character_set_database);
 
269
  SET @@collation_database= 'latin7_estonian_cs';
 
270
  INSERT INTO tproc(text) VALUES (@@session.collation_database);
 
271
  INSERT INTO tproc(text) VALUES (@@session.character_set_database);
 
272
 
 
273
  SET @@timestamp= 47114711;
 
274
  INSERT INTO tproc(text) VALUES (@@session.timestamp);
 
275
  SET @@timestamp= 47124712;
 
276
  INSERT INTO tproc(text) VALUES (@@session.timestamp);
 
277
 
 
278
  SET @@last_insert_id= 1616;
 
279
  INSERT INTO tproc(text) VALUES (@@session.last_insert_id);
 
280
  SET @@last_insert_id= 1717;
 
281
  INSERT INTO tproc(text) VALUES (@@session.last_insert_id);
 
282
 
 
283
END|
 
284
DELIMITER ;|
 
285
 
 
286
CALL proc();
 
287
 
 
288
 
 
289
--echo ==== Insert variables from a stored function ====
 
290
 
 
291
DELIMITER |;
 
292
CREATE FUNCTION func()
 
293
RETURNS INT
 
294
BEGIN
 
295
 
 
296
  SET @@pseudo_thread_id= 4712;
 
297
  INSERT INTO tfunc(num)  VALUES (@@session.pseudo_thread_id);
 
298
  SET @@pseudo_thread_id= 4713;
 
299
  INSERT INTO tfunc(num)  VALUES (@@session.pseudo_thread_id);
 
300
 
 
301
  SET @@foreign_key_checks= 0;
 
302
  INSERT INTO tfunc(num)  VALUES (@@session.foreign_key_checks);
 
303
  SET @@foreign_key_checks= 1;
 
304
  INSERT INTO tfunc(num)  VALUES (@@session.foreign_key_checks);
 
305
 
 
306
  SET @@sql_auto_is_null= 0;
 
307
  INSERT INTO tfunc(num)  VALUES (@@session.sql_auto_is_null);
 
308
  SET @@sql_auto_is_null= 1;
 
309
  INSERT INTO tfunc(num)  VALUES (@@session.sql_auto_is_null);
 
310
 
 
311
  SET @@unique_checks= 0;
 
312
  INSERT INTO tfunc(num)  VALUES (@@session.unique_checks);
 
313
  SET @@unique_checks= 1;
 
314
  INSERT INTO tfunc(num)  VALUES (@@session.unique_checks);
 
315
 
 
316
  SET @@auto_increment_increment= 11;
 
317
  INSERT INTO tfunc(num)  VALUES (@@session.auto_increment_increment);
 
318
  SET @@auto_increment_increment= 19;
 
319
  INSERT INTO tfunc(num)  VALUES (@@session.auto_increment_increment);
 
320
 
 
321
  SET @@auto_increment_offset= 13;
 
322
  INSERT INTO tfunc(num)  VALUES (@@session.auto_increment_offset);
 
323
  SET @@auto_increment_offset= 17;
 
324
  INSERT INTO tfunc(num)  VALUES (@@session.auto_increment_offset);
 
325
 
 
326
  # reset these as they affect the index column
 
327
  SET @@auto_increment_increment= 1;
 
328
  SET @@auto_increment_offset= 1;
 
329
 
 
330
  SET @@character_set_client= 'cp1257';
 
331
  INSERT INTO tfunc(text) VALUES (@@session.character_set_client);
 
332
  SET @@character_set_client= 'cp1256';
 
333
  INSERT INTO tfunc(text) VALUES (@@session.character_set_client);
 
334
 
 
335
  SET @@collation_connection= 'cp1251_ukrainian_ci';
 
336
  INSERT INTO tfunc(text) VALUES (@@session.collation_connection);
 
337
  INSERT INTO tfunc(text) VALUES (@@session.character_set_connection);
 
338
  SET @@collation_connection= 'cp1251_bulgarian_ci';
 
339
  INSERT INTO tfunc(text) VALUES (@@session.collation_connection);
 
340
  INSERT INTO tfunc(text) VALUES (@@session.character_set_connection);
 
341
 
 
342
  SET @@collation_server= 'latin7_bin';
 
343
  INSERT INTO tfunc(text) VALUES (@@session.collation_server);
 
344
  INSERT INTO tfunc(text) VALUES (@@session.character_set_server);
 
345
  SET @@collation_server= 'latin7_general_cs';
 
346
  INSERT INTO tfunc(text) VALUES (@@session.collation_server);
 
347
  INSERT INTO tfunc(text) VALUES (@@session.character_set_server);
 
348
 
 
349
  SET @@time_zone= 'Europe/Moscow';
 
350
  INSERT INTO tfunc(text) VALUES (@@session.time_zone);
 
351
  SET @@time_zone= 'Universal';
 
352
  INSERT INTO tfunc(text) VALUES (@@session.time_zone);
 
353
 
 
354
  SET @@lc_time_names= 'sv_FI';
 
355
  INSERT INTO tfunc(text) VALUES (@@session.lc_time_names);
 
356
  SET @@lc_time_names= 'no_NO';
 
357
  INSERT INTO tfunc(text) VALUES (@@session.lc_time_names);
 
358
 
 
359
  SET @@collation_database= 'latin7_general_ci';
 
360
  INSERT INTO tfunc(text) VALUES (@@session.collation_database);
 
361
  INSERT INTO tfunc(text) VALUES (@@session.character_set_database);
 
362
  SET @@collation_database= 'latin7_estonian_cs';
 
363
  INSERT INTO tfunc(text) VALUES (@@session.collation_database);
 
364
  INSERT INTO tfunc(text) VALUES (@@session.character_set_database);
 
365
 
 
366
  SET @@timestamp= 47114711;
 
367
  INSERT INTO tfunc(text) VALUES (@@session.timestamp);
 
368
  SET @@timestamp= 47124712;
 
369
  INSERT INTO tfunc(text) VALUES (@@session.timestamp);
 
370
 
 
371
  SET @@last_insert_id= 1616;
 
372
  INSERT INTO tfunc(text) VALUES (@@session.last_insert_id);
 
373
  SET @@last_insert_id= 1717;
 
374
  INSERT INTO tfunc(text) VALUES (@@session.last_insert_id);
 
375
 
 
376
  RETURN 0;
 
377
END|
 
378
DELIMITER ;|
 
379
 
 
380
SELECT func();
 
381
 
 
382
 
 
383
--echo ==== Insert variables from a trigger ====
 
384
 
 
385
DELIMITER |;
 
386
CREATE TRIGGER trig
 
387
BEFORE INSERT ON trigger_table
 
388
FOR EACH ROW
 
389
BEGIN
 
390
 
 
391
  SET @@pseudo_thread_id= 4712;
 
392
  INSERT INTO ttrig(num)  VALUES (@@session.pseudo_thread_id);
 
393
  SET @@pseudo_thread_id= 4713;
 
394
  INSERT INTO ttrig(num)  VALUES (@@session.pseudo_thread_id);
 
395
 
 
396
  SET @@foreign_key_checks= 0;
 
397
  INSERT INTO ttrig(num)  VALUES (@@session.foreign_key_checks);
 
398
  SET @@foreign_key_checks= 1;
 
399
  INSERT INTO ttrig(num)  VALUES (@@session.foreign_key_checks);
 
400
 
 
401
  SET @@sql_auto_is_null= 0;
 
402
  INSERT INTO ttrig(num)  VALUES (@@session.sql_auto_is_null);
 
403
  SET @@sql_auto_is_null= 1;
 
404
  INSERT INTO ttrig(num)  VALUES (@@session.sql_auto_is_null);
 
405
 
 
406
  SET @@unique_checks= 0;
 
407
  INSERT INTO ttrig(num)  VALUES (@@session.unique_checks);
 
408
  SET @@unique_checks= 1;
 
409
  INSERT INTO ttrig(num)  VALUES (@@session.unique_checks);
 
410
 
 
411
  SET @@auto_increment_increment= 11;
 
412
  INSERT INTO ttrig(num)  VALUES (@@session.auto_increment_increment);
 
413
  SET @@auto_increment_increment= 19;
 
414
  INSERT INTO ttrig(num)  VALUES (@@session.auto_increment_increment);
 
415
 
 
416
  SET @@auto_increment_offset= 13;
 
417
  INSERT INTO ttrig(num)  VALUES (@@session.auto_increment_offset);
 
418
  SET @@auto_increment_offset= 17;
 
419
  INSERT INTO ttrig(num)  VALUES (@@session.auto_increment_offset);
 
420
 
 
421
  # reset these as they affect the index column
 
422
  SET @@auto_increment_increment= 1;
 
423
  SET @@auto_increment_offset= 1;
 
424
 
 
425
  SET @@character_set_client= 'cp1257';
 
426
  INSERT INTO ttrig(text) VALUES (@@session.character_set_client);
 
427
  SET @@character_set_client= 'cp1256';
 
428
  INSERT INTO ttrig(text) VALUES (@@session.character_set_client);
 
429
 
 
430
  SET @@collation_connection= 'cp1251_ukrainian_ci';
 
431
  INSERT INTO ttrig(text) VALUES (@@session.collation_connection);
 
432
  INSERT INTO ttrig(text) VALUES (@@session.character_set_connection);
 
433
  SET @@collation_connection= 'cp1251_bulgarian_ci';
 
434
  INSERT INTO ttrig(text) VALUES (@@session.collation_connection);
 
435
  INSERT INTO ttrig(text) VALUES (@@session.character_set_connection);
 
436
 
 
437
  SET @@collation_server= 'latin7_bin';
 
438
  INSERT INTO ttrig(text) VALUES (@@session.collation_server);
 
439
  INSERT INTO ttrig(text) VALUES (@@session.character_set_server);
 
440
  SET @@collation_server= 'latin7_general_cs';
 
441
  INSERT INTO ttrig(text) VALUES (@@session.collation_server);
 
442
  INSERT INTO ttrig(text) VALUES (@@session.character_set_server);
 
443
 
 
444
  SET @@time_zone= 'Europe/Moscow';
 
445
  INSERT INTO ttrig(text) VALUES (@@session.time_zone);
 
446
  SET @@time_zone= 'Universal';
 
447
  INSERT INTO ttrig(text) VALUES (@@session.time_zone);
 
448
 
 
449
  SET @@lc_time_names= 'sv_FI';
 
450
  INSERT INTO ttrig(text) VALUES (@@session.lc_time_names);
 
451
  SET @@lc_time_names= 'no_NO';
 
452
  INSERT INTO ttrig(text) VALUES (@@session.lc_time_names);
 
453
 
 
454
  SET @@collation_database= 'latin7_general_ci';
 
455
  INSERT INTO ttrig(text) VALUES (@@session.collation_database);
 
456
  INSERT INTO ttrig(text) VALUES (@@session.character_set_database);
 
457
  SET @@collation_database= 'latin7_estonian_cs';
 
458
  INSERT INTO ttrig(text) VALUES (@@session.collation_database);
 
459
  INSERT INTO ttrig(text) VALUES (@@session.character_set_database);
 
460
 
 
461
  SET @@timestamp= 47114711;
 
462
  INSERT INTO ttrig(text) VALUES (@@session.timestamp);
 
463
  SET @@timestamp= 47124712;
 
464
  INSERT INTO ttrig(text) VALUES (@@session.timestamp);
 
465
 
 
466
  SET @@last_insert_id= 1616;
 
467
  INSERT INTO ttrig(text) VALUES (@@session.last_insert_id);
 
468
  SET @@last_insert_id= 1717;
 
469
  INSERT INTO ttrig(text) VALUES (@@session.last_insert_id);
 
470
 
 
471
END|
 
472
DELIMITER ;|
 
473
 
 
474
INSERT INTO trigger_table VALUES ('bye.');
 
475
 
 
476
 
 
477
--echo ==== Insert variables from a prepared statement ====
 
478
 
 
479
# GLOBAL
 
480
 
 
481
PREPARE p1 FROM 'SET @@pseudo_thread_id= 4712';
 
482
PREPARE p2 FROM 'INSERT INTO tprep(num)  VALUES (@@session.pseudo_thread_id)';
 
483
PREPARE p3 FROM 'SET @@pseudo_thread_id= 4713';
 
484
PREPARE p4 FROM 'INSERT INTO tprep(num)  VALUES (@@session.pseudo_thread_id)';
 
485
 
 
486
PREPARE p5 FROM 'SET @@foreign_key_checks= 0';
 
487
PREPARE p6 FROM 'INSERT INTO tprep(num)  VALUES (@@session.foreign_key_checks)';
 
488
PREPARE p7 FROM 'SET @@foreign_key_checks= 1';
 
489
PREPARE p8 FROM 'INSERT INTO tprep(num)  VALUES (@@session.foreign_key_checks)';
 
490
 
 
491
PREPARE p9 FROM 'SET @@sql_auto_is_null= 0';
 
492
PREPARE p10 FROM 'INSERT INTO tprep(num)  VALUES (@@session.sql_auto_is_null)';
 
493
PREPARE p11 FROM 'SET @@sql_auto_is_null= 1';
 
494
PREPARE p12 FROM 'INSERT INTO tprep(num)  VALUES (@@session.sql_auto_is_null)';
 
495
 
 
496
PREPARE p13 FROM 'SET @@unique_checks= 0';
 
497
PREPARE p14 FROM 'INSERT INTO tprep(num)  VALUES (@@session.unique_checks)';
 
498
PREPARE p15 FROM 'SET @@unique_checks= 1';
 
499
PREPARE p16 FROM 'INSERT INTO tprep(num)  VALUES (@@session.unique_checks)';
 
500
 
 
501
PREPARE p17 FROM 'SET @@auto_increment_increment= 11';
 
502
PREPARE p18 FROM 'INSERT INTO tprep(num)  VALUES (@@session.auto_increment_increment)';
 
503
PREPARE p19 FROM 'SET @@auto_increment_increment= 19';
 
504
PREPARE p20 FROM 'INSERT INTO tprep(num)  VALUES (@@session.auto_increment_increment)';
 
505
 
 
506
PREPARE p21 FROM 'SET @@auto_increment_offset= 13';
 
507
PREPARE p22 FROM 'INSERT INTO tprep(num)  VALUES (@@session.auto_increment_offset)';
 
508
PREPARE p23 FROM 'SET @@auto_increment_offset= 17';
 
509
PREPARE p24 FROM 'INSERT INTO tprep(num)  VALUES (@@session.auto_increment_offset)';
 
510
 
 
511
# reset these as they affect the index column
 
512
PREPARE p25 FROM 'SET @@auto_increment_increment= 1';
 
513
PREPARE p26 FROM 'SET @@auto_increment_offset= 1';
 
514
 
 
515
PREPARE p27 FROM 'SET @@character_set_client= \'cp1257\'';
 
516
PREPARE p28 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_client)';
 
517
PREPARE p29 FROM 'SET @@character_set_client= \'cp1256\'';
 
518
PREPARE p30 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_client)';
 
519
 
 
520
PREPARE p31 FROM 'SET @@collation_connection= \'cp1251_ukrainian_ci\'';
 
521
PREPARE p32 FROM 'INSERT INTO tprep(text) VALUES (@@session.collation_connection)';
 
522
PREPARE p33 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_connection)';
 
523
PREPARE p34 FROM 'SET @@collation_connection= \'cp1251_bulgarian_ci\'';
 
524
PREPARE p35 FROM 'INSERT INTO tprep(text) VALUES (@@session.collation_connection)';
 
525
PREPARE p36 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_connection)';
 
526
 
 
527
PREPARE p37 FROM 'SET @@collation_server= \'latin7_bin\'';
 
528
PREPARE p38 FROM 'INSERT INTO tprep(text) VALUES (@@session.collation_server)';
 
529
PREPARE p39 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_server)';
 
530
PREPARE p40 FROM 'SET @@collation_server= \'latin7_general_cs\'';
 
531
PREPARE p41 FROM 'INSERT INTO tprep(text) VALUES (@@session.collation_server)';
 
532
PREPARE p42 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_server)';
 
533
 
 
534
PREPARE p43 FROM 'SET @@time_zone= \'Europe/Moscow\'';
 
535
PREPARE p44 FROM 'INSERT INTO tprep(text) VALUES (@@session.time_zone)';
 
536
PREPARE p45 FROM 'SET @@time_zone= \'Universal\'';
 
537
PREPARE p46 FROM 'INSERT INTO tprep(text) VALUES (@@session.time_zone)';
 
538
 
 
539
PREPARE p47 FROM 'SET @@lc_time_names= \'sv_FI\'';
 
540
PREPARE p48 FROM 'INSERT INTO tprep(text) VALUES (@@session.lc_time_names)';
 
541
PREPARE p49 FROM 'SET @@lc_time_names= \'no_NO\'';
 
542
PREPARE p50 FROM 'INSERT INTO tprep(text) VALUES (@@session.lc_time_names)';
 
543
 
 
544
PREPARE p51 FROM 'SET @@collation_database= \'latin7_general_ci\'';
 
545
PREPARE p52 FROM 'INSERT INTO tprep(text) VALUES (@@session.collation_database)';
 
546
PREPARE p53 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_database)';
 
547
PREPARE p54 FROM 'SET @@collation_database= \'latin7_estonian_cs\'';
 
548
PREPARE p55 FROM 'INSERT INTO tprep(text) VALUES (@@session.collation_database)';
 
549
PREPARE p56 FROM 'INSERT INTO tprep(text) VALUES (@@session.character_set_database)';
 
550
 
 
551
PREPARE p57 FROM 'SET @@timestamp= 47114711';
 
552
PREPARE p58 FROM 'INSERT INTO tprep(text) VALUES (@@session.timestamp)';
 
553
PREPARE p59 FROM 'SET @@timestamp= 47124712';
 
554
PREPARE p60 FROM 'INSERT INTO tprep(text) VALUES (@@session.timestamp)';
 
555
 
 
556
PREPARE p61 FROM 'SET @@last_insert_id= 1616';
 
557
PREPARE p62 FROM 'INSERT INTO tprep(text) VALUES (@@session.last_insert_id)';
 
558
PREPARE p63 FROM 'SET @@last_insert_id= 1717';
 
559
PREPARE p64 FROM 'INSERT INTO tprep(text) VALUES (@@session.last_insert_id)';
 
560
 
 
561
EXECUTE p1;  EXECUTE p2;  EXECUTE p3;  EXECUTE p4;  EXECUTE p5;  EXECUTE p6;
 
562
EXECUTE p7;  EXECUTE p8;  EXECUTE p9;  EXECUTE p10; EXECUTE p11; EXECUTE p12;
 
563
EXECUTE p13; EXECUTE p14; EXECUTE p15; EXECUTE p16; EXECUTE p17; EXECUTE p18;
 
564
EXECUTE p19; EXECUTE p20; EXECUTE p21; EXECUTE p22; EXECUTE p23; EXECUTE p24;
 
565
EXECUTE p25; EXECUTE p26; EXECUTE p27; EXECUTE p28; EXECUTE p29; EXECUTE p30;
 
566
EXECUTE p31; EXECUTE p32; EXECUTE p33; EXECUTE p34; EXECUTE p35; EXECUTE p36;
 
567
EXECUTE p37; EXECUTE p38; EXECUTE p39; EXECUTE p40; EXECUTE p41; EXECUTE p42;
 
568
EXECUTE p43; EXECUTE p44; EXECUTE p45; EXECUTE p46; EXECUTE p47; EXECUTE p48;
 
569
EXECUTE p49; EXECUTE p50; EXECUTE p51; EXECUTE p52; EXECUTE p53; EXECUTE p54;
 
570
EXECUTE p55; EXECUTE p56; EXECUTE p57; EXECUTE p58; EXECUTE p59; EXECUTE p60;
 
571
EXECUTE p61; EXECUTE p62; EXECUTE p63; EXECUTE p64;
 
572
 
 
573
 
 
574
--echo ==== Results ====
 
575
 
 
576
# Show the result in table test.tstmt on master...
 
577
SELECT * FROM tstmt ORDER BY id;
 
578
let $diff_table_1=master:test.tstmt;
 
579
 
 
580
# ... then compare test.tstmt on master to the other tables on master...
 
581
let $diff_table_2=master:test.tproc;
 
582
source include/diff_tables.inc;
 
583
let $diff_table_2=master:test.tfunc;
 
584
source include/diff_tables.inc;
 
585
let $diff_table_2=master:test.ttrig;
 
586
source include/diff_tables.inc;
 
587
let $diff_table_2=master:test.tprep;
 
588
source include/diff_tables.inc;
 
589
 
 
590
# ... and to all tables on slave.
 
591
sync_slave_with_master;
 
592
let $diff_table_2=slave:test.tstmt;
 
593
source include/diff_tables.inc;
 
594
let $diff_table_2=slave:test.tproc;
 
595
source include/diff_tables.inc;
 
596
let $diff_table_2=slave:test.tfunc;
 
597
source include/diff_tables.inc;
 
598
let $diff_table_2=slave:test.ttrig;
 
599
source include/diff_tables.inc;
 
600
let $diff_table_2=slave:test.tprep;
 
601
source include/diff_tables.inc;
 
602
 
 
603
 
 
604
--echo ==== Clean up ====
 
605
 
 
606
--echo [on master]
 
607
connection master;
 
608
DROP PROCEDURE proc;
 
609
DROP FUNCTION func;
 
610
DROP TRIGGER trig;
 
611
DROP TABLE tstmt, tproc, tfunc, ttrig, tprep, trigger_table;
 
612
 
 
613
SET @@global.pseudo_thread_id=         @m_pseudo_thread_id;
 
614
SET @@global.auto_increment_increment= @m_auto_increment_increment;
 
615
SET @@global.auto_increment_offset=    @m_auto_increment_offset;
 
616
SET @@global.character_set_client=     @m_character_set_client;
 
617
SET @@global.collation_connection=     @m_collation_connection;
 
618
SET @@global.collation_server=         @m_collation_server;
 
619
SET @@global.time_zone=                @m_time_zone;
 
620
SET @@global.lc_time_names=            @m_lc_time_names;
 
621
SET @@global.collation_database=       @m_collation_database;
 
622
 
 
623
--echo [on slave]
 
624
connection slave;
 
625
SET @@global.pseudo_thread_id=         @s_pseudo_thread_id;
 
626
SET @@global.auto_increment_increment= @s_auto_increment_increment;
 
627
SET @@global.auto_increment_offset=    @s_auto_increment_offset;
 
628
SET @@global.character_set_client=     @s_character_set_client;
 
629
SET @@global.collation_connection=     @s_collation_connection;
 
630
SET @@global.collation_server=         @s_collation_server;
 
631
SET @@global.time_zone=                @s_time_zone;
 
632
SET @@global.lc_time_names=            @s_lc_time_names;
 
633
SET @@global.collation_database=       @s_collation_database;
 
634
 
 
635
connection master;
 
636
sync_slave_with_master;