~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mysql-test/t/ddl_i18n_koi8r.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
# Objects to test:
 
2
#   - stored procedures/functions;
 
3
#   - triggers;
 
4
#   - events;
 
5
#   - views;
 
6
#
 
7
# For stored routines:
 
8
#   - create a database with collation utf8_unicode_ci;
 
9
#   - create an object, which
 
10
#     - contains SP-var with explicit CHARSET-clause;
 
11
#     - contains SP-var without CHARSET-clause;
 
12
#     - contains text constant;
 
13
#     - has localized routine/parameter names;
 
14
#   - check:
 
15
#     - execute;
 
16
#     - SHOW CREATE output;
 
17
#     - SHOW output;
 
18
#     - SELECT FROM INFORMATION_SCHEMA output;
 
19
#   - alter database character set;
 
20
#   - change connection collation;
 
21
#   - check again;
 
22
#   - dump definition using mysqldump;
 
23
#   - drop object;
 
24
#   - restore object;
 
25
 
26
 
 
27
###########################################################################
 
28
#
 
29
# NOTE: this file contains text in UTF8 and KOI8-R encodings.
 
30
#
 
31
###########################################################################
 
32
 
 
33
# Test requires server to accept client connections (for mysqldump portions)
 
34
--source include/not_embedded.inc
 
35
--source include/have_utf8.inc
 
36
--source include/have_cp866.inc
 
37
--source include/have_cp1251.inc
 
38
--source include/have_koi8r.inc
 
39
 
 
40
###########################################################################
 
41
 
 
42
set names koi8r;
 
43
delimiter |;
 
44
 
 
45
###########################################################################
 
46
#
 
47
# * Views.
 
48
#
 
49
###########################################################################
 
50
 
 
51
--echo
 
52
--echo -------------------------------------------------------------------
 
53
--echo Views
 
54
--echo -------------------------------------------------------------------
 
55
--echo
 
56
 
 
57
#
 
58
# Preparation:
 
59
#
 
60
 
 
61
#   - Create database with fixed, pre-defined character set.
 
62
 
 
63
--disable_warnings
 
64
DROP DATABASE IF EXISTS mysqltest1|
 
65
--enable_warnings
 
66
 
 
67
CREATE DATABASE mysqltest1 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci|
 
68
 
 
69
use mysqltest1|
 
70
 
 
71
CREATE TABLE t1(��� INT)|
 
72
INSERT INTO t1 VALUES(1)|
 
73
 
 
74
#   - Create views;
 
75
 
 
76
--echo
 
77
 
 
78
CREATE VIEW v1 AS
 
79
  SELECT '����' AS c1, ��� AS c2
 
80
  FROM t1|
 
81
 
 
82
--echo
 
83
 
 
84
CREATE VIEW v2 AS SELECT _utf8'тест' as c1|
 
85
 
 
86
--echo
 
87
 
 
88
CREATE VIEW v3 AS SELECT _utf8'тест'|
 
89
 
 
90
--echo
 
91
 
 
92
#
 
93
# First-round checks.
 
94
#
 
95
 
 
96
--source include/ddl_i18n.check_views.inc
 
97
 
 
98
#
 
99
# Change running environment (alter database character set, change session
 
100
# variables).
 
101
#
 
102
 
 
103
--echo
 
104
--echo
 
105
 
 
106
ALTER DATABASE mysqltest1 COLLATE cp866_general_ci|
 
107
 
 
108
#
 
109
# Second-round checks:
 
110
#
 
111
 
 
112
#   - Change connection to flush cache;
 
113
 
 
114
--connect (con2,localhost,root,,)
 
115
--echo
 
116
--echo ---> connection: con2
 
117
 
 
118
#   - Switch environment variables and trigger loading views;
 
119
 
 
120
SET @@character_set_client= cp1251|
 
121
SET @@character_set_results= cp1251|
 
122
SET @@collation_connection= cp1251_general_ci|
 
123
 
 
124
--disable_result_log
 
125
SELECT * FROM mysqltest1.v1|
 
126
SELECT * FROM mysqltest1.v2|
 
127
SELECT * FROM mysqltest1.v3|
 
128
--enable_result_log
 
129
 
 
130
use mysqltest1|
 
131
 
 
132
#   - Restore environment;
 
133
 
 
134
set names koi8r|
 
135
 
 
136
#   - Check!
 
137
 
 
138
--source include/ddl_i18n.check_views.inc
 
139
 
 
140
#
 
141
# Check mysqldump.
 
142
#
 
143
 
 
144
#  - Dump mysqltest1;
 
145
 
 
146
--echo
 
147
--echo ---> Dumping mysqltest1 to ddl_i18n_koi8r.views.mysqltest1.sql
 
148
 
 
149
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.views.mysqltest1.sql
 
150
 
 
151
#   - Clean mysqltest1;
 
152
 
 
153
--echo
 
154
--echo
 
155
 
 
156
DROP DATABASE mysqltest1|
 
157
 
 
158
#   - Restore mysqltest1;
 
159
 
 
160
--echo
 
161
--echo
 
162
 
 
163
--echo ---> Restoring mysqltest1...
 
164
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.views.mysqltest1.sql
 
165
 
 
166
#
 
167
# Third-round checks.
 
168
#
 
169
 
 
170
#   - Change connection to flush cache;
 
171
 
 
172
--connect (con3,localhost,root,,)
 
173
--echo
 
174
--echo ---> connection: con3
 
175
 
 
176
#   - Switch environment variables and trigger loading views;
 
177
 
 
178
SET @@character_set_client= cp1251|
 
179
SET @@character_set_results= cp1251|
 
180
SET @@collation_connection= cp1251_general_ci|
 
181
 
 
182
--disable_result_log
 
183
SELECT * FROM mysqltest1.v1|
 
184
SELECT * FROM mysqltest1.v2|
 
185
SELECT * FROM mysqltest1.v3|
 
186
--enable_result_log
 
187
 
 
188
use mysqltest1|
 
189
 
 
190
#   - Restore environment;
 
191
 
 
192
set names koi8r|
 
193
 
 
194
#   - Check!
 
195
 
 
196
--source include/ddl_i18n.check_views.inc
 
197
 
 
198
#
 
199
# Cleanup.
 
200
#
 
201
 
 
202
--connection default
 
203
--echo
 
204
--echo ---> connection: default
 
205
 
 
206
--disconnect con2
 
207
--disconnect con3
 
208
 
 
209
use test|
 
210
 
 
211
DROP DATABASE mysqltest1|
 
212
 
 
213
###########################################################################
 
214
#
 
215
# * Stored procedures/functions.
 
216
#
 
217
###########################################################################
 
218
 
 
219
--echo
 
220
--echo -------------------------------------------------------------------
 
221
--echo Stored procedures/functions
 
222
--echo -------------------------------------------------------------------
 
223
--echo
 
224
 
 
225
#
 
226
# Preparation:
 
227
#
 
228
 
 
229
#   - Create database with fixed, pre-defined character set.
 
230
 
 
231
--disable_warnings
 
232
DROP DATABASE IF EXISTS mysqltest1|
 
233
DROP DATABASE IF EXISTS mysqltest2|
 
234
--enable_warnings
 
235
 
 
236
CREATE DATABASE mysqltest1 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci|
 
237
CREATE DATABASE mysqltest2 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci|
 
238
 
 
239
use mysqltest1|
 
240
 
 
241
#   - Create two stored routines -- with and without explicit
 
242
#     CHARSET-clause for SP-variable;
 
243
#
 
244
 
 
245
--echo
 
246
 
 
247
#     - Procedure p1
 
248
 
 
249
CREATE PROCEDURE p1(
 
250
  INOUT �����1 CHAR(10),
 
251
  OUT �����2 CHAR(10))
 
252
BEGIN
 
253
  DECLARE �����1 CHAR(10);
 
254
 
 
255
  SELECT
 
256
    COLLATION(�����1) AS c1,
 
257
    COLLATION(�����1) AS c2,
 
258
    COLLATION(�����2) AS c3;
 
259
 
 
260
  SELECT
 
261
    COLLATION('�����') AS c4,
 
262
    COLLATION(_koi8r    '�����') AS c5,
 
263
    COLLATION(_utf8 'текст') AS c6,
 
264
    @@collation_connection AS c7,
 
265
    @@character_set_client AS c8;
 
266
 
 
267
  SET �����1 = 'a';
 
268
  SET �����2 = 'b';
 
269
END|
 
270
 
 
271
--echo
 
272
 
 
273
#     - Procedure p2
 
274
 
 
275
CREATE PROCEDURE p2(
 
276
  INOUT �����1 CHAR(10) CHARACTER SET utf8,
 
277
  OUT �����2 CHAR(10) CHARACTER SET utf8)
 
278
BEGIN
 
279
  DECLARE �����1 CHAR(10) CHARACTER SET utf8;
 
280
 
 
281
  SELECT
 
282
    COLLATION(�����1) AS c1,
 
283
    COLLATION(�����1) AS c2,
 
284
    COLLATION(�����2) AS c3;
 
285
 
 
286
  SELECT
 
287
    COLLATION('�����') AS c4,
 
288
    COLLATION(_koi8r    '�����') AS c5,
 
289
    COLLATION(_utf8 'текст') AS c6,
 
290
    @@collation_connection AS c7,
 
291
    @@character_set_client AS c8;
 
292
 
 
293
  SET �����1 = 'a';
 
294
  SET �����2 = 'b';
 
295
END|
 
296
 
 
297
--echo
 
298
 
 
299
#     - Procedure p3
 
300
 
 
301
CREATE PROCEDURE mysqltest2.p3(
 
302
  INOUT �����1 CHAR(10),
 
303
  OUT �����2 CHAR(10))
 
304
BEGIN
 
305
  DECLARE �����1 CHAR(10);
 
306
 
 
307
  SELECT
 
308
    COLLATION(�����1) AS c1,
 
309
    COLLATION(�����1) AS c2,
 
310
    COLLATION(�����2) AS c3;
 
311
 
 
312
  SELECT
 
313
    COLLATION('�����') AS c4,
 
314
    COLLATION(_koi8r    '�����') AS c5,
 
315
    COLLATION(_utf8 'текст') AS c6,
 
316
    @@collation_connection AS c7,
 
317
    @@character_set_client AS c8;
 
318
 
 
319
  SET �����1 = 'a';
 
320
  SET �����2 = 'b';
 
321
END|
 
322
 
 
323
--echo
 
324
 
 
325
#     - Procedure p4
 
326
 
 
327
CREATE PROCEDURE mysqltest2.p4(
 
328
  INOUT �����1 CHAR(10) CHARACTER SET utf8,
 
329
  OUT �����2 CHAR(10) CHARACTER SET utf8)
 
330
BEGIN
 
331
  DECLARE �����1 CHAR(10) CHARACTER SET utf8;
 
332
 
 
333
  SELECT
 
334
    COLLATION(�����1) AS c1,
 
335
    COLLATION(�����1) AS c2,
 
336
    COLLATION(�����2) AS c3;
 
337
 
 
338
  SELECT
 
339
    COLLATION('�����') AS c4,
 
340
    COLLATION(_koi8r    '�����') AS c5,
 
341
    COLLATION(_utf8 'текст') AS c6,
 
342
    @@collation_connection AS c7,
 
343
    @@character_set_client AS c8;
 
344
 
 
345
  SET �����1 = 'a';
 
346
  SET �����2 = 'b';
 
347
END|
 
348
 
 
349
#
 
350
# First-round checks.
 
351
#
 
352
 
 
353
--source include/ddl_i18n.check_sp.inc
 
354
 
 
355
#
 
356
# Change running environment (alter database character set, change session
 
357
# variables).
 
358
#
 
359
 
 
360
--echo
 
361
--echo
 
362
 
 
363
ALTER DATABASE mysqltest1 COLLATE cp866_general_ci|
 
364
ALTER DATABASE mysqltest2 COLLATE cp866_general_ci|
 
365
 
 
366
#
 
367
# Second-round checks:
 
368
#
 
369
 
 
370
#   - Change connection to flush SP-cache;
 
371
 
 
372
--connect (con2,localhost,root,,mysqltest1)
 
373
--echo
 
374
--echo ---> connection: con2
 
375
 
 
376
#   - Switch environment variables and trigger loading stored procedures;
 
377
 
 
378
SET @@character_set_client= cp1251|
 
379
SET @@character_set_results= cp1251|
 
380
SET @@collation_connection= cp1251_general_ci|
 
381
 
 
382
CALL p1(@a, @b)|
 
383
CALL p2(@a, @b)|
 
384
CALL mysqltest2.p3(@a, @b)|
 
385
CALL mysqltest2.p4(@a, @b)|
 
386
 
 
387
#   - Restore environment;
 
388
 
 
389
set names koi8r|
 
390
 
 
391
#   - Check!
 
392
 
 
393
--source include/ddl_i18n.check_sp.inc
 
394
 
 
395
#
 
396
# Check mysqldump.
 
397
#
 
398
 
 
399
#  - Dump mysqltest1, mysqltest2;
 
400
 
 
401
--echo
 
402
--echo ---> Dump of mysqltest1
 
403
 
 
404
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest1
 
405
 
 
406
--echo
 
407
--echo ---> Dumping mysqltest1 to ddl_i18n_koi8r.sp.mysqltest1.sql
 
408
 
 
409
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.sp.mysqltest1.sql
 
410
 
 
411
--echo
 
412
--echo ---> Dump of mysqltest2
 
413
 
 
414
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest2
 
415
 
 
416
--echo
 
417
--echo ---> Dumping mysqltest2 to ddl_i18n_koi8r.sp.mysqltest2.sql
 
418
 
 
419
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.sp.mysqltest2.sql
 
420
 
 
421
#   - Clean mysqltest1, mysqltest2;
 
422
 
 
423
--echo
 
424
--echo
 
425
 
 
426
DROP DATABASE mysqltest1|
 
427
DROP DATABASE mysqltest2|
 
428
 
 
429
#   - Restore mysqltest1;
 
430
 
 
431
--echo
 
432
--echo
 
433
 
 
434
--echo ---> Restoring mysqltest1...
 
435
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.sp.mysqltest1.sql
 
436
 
 
437
--echo ---> Restoring mysqltest2...
 
438
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.sp.mysqltest2.sql
 
439
 
 
440
#
 
441
# Third-round checks.
 
442
#
 
443
 
 
444
#   - Change connection to flush SP-cache;
 
445
 
 
446
--connect (con3,localhost,root,,mysqltest1)
 
447
--echo
 
448
--echo ---> connection: con3
 
449
 
 
450
#   - Switch environment variables and trigger loading stored procedures;
 
451
 
 
452
SET @@character_set_client= cp1251|
 
453
SET @@character_set_results= cp1251|
 
454
SET @@collation_connection= cp1251_general_ci|
 
455
 
 
456
CALL p1(@a, @b)|
 
457
CALL p2(@a, @b)|
 
458
CALL mysqltest2.p3(@a, @b)|
 
459
CALL mysqltest2.p4(@a, @b)|
 
460
 
 
461
#   - Restore environment;
 
462
 
 
463
set names koi8r|
 
464
 
 
465
#   - Check!
 
466
 
 
467
--source include/ddl_i18n.check_sp.inc
 
468
 
 
469
#
 
470
# Cleanup.
 
471
#
 
472
 
 
473
--connection default
 
474
--echo
 
475
--echo ---> connection: default
 
476
 
 
477
--disconnect con2
 
478
--disconnect con3
 
479
 
 
480
use test|
 
481
 
 
482
DROP DATABASE mysqltest1|
 
483
DROP DATABASE mysqltest2|
 
484
 
 
485
###########################################################################
 
486
#
 
487
# * Triggers.
 
488
#
 
489
###########################################################################
 
490
 
 
491
--echo
 
492
--echo -------------------------------------------------------------------
 
493
--echo Triggers
 
494
--echo -------------------------------------------------------------------
 
495
--echo
 
496
 
 
497
#
 
498
# Preparation:
 
499
#
 
500
 
 
501
#   - Create database with fixed, pre-defined character set;
 
502
 
 
503
--disable_warnings
 
504
DROP DATABASE IF EXISTS mysqltest1|
 
505
DROP DATABASE IF EXISTS mysqltest2|
 
506
--enable_warnings
 
507
 
 
508
CREATE DATABASE mysqltest1 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci|
 
509
CREATE DATABASE mysqltest2 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci|
 
510
 
 
511
use mysqltest1|
 
512
 
 
513
#   - Create tables for triggers;
 
514
 
 
515
CREATE TABLE t1(c INT)|
 
516
CREATE TABLE mysqltest2.t1(c INT)|
 
517
 
 
518
#   - Create log tables;
 
519
 
 
520
CREATE TABLE log(msg VARCHAR(255))|
 
521
CREATE TABLE mysqltest2.log(msg VARCHAR(255))|
 
522
 
 
523
 
 
524
#   - Create triggers -- with and without explicit CHARSET-clause for
 
525
#     SP-variable;
 
526
#
 
527
 
 
528
--echo
 
529
 
 
530
#     - Trigger trg1
 
531
 
 
532
CREATE TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW
 
533
BEGIN
 
534
  DECLARE �����1 CHAR(10);
 
535
 
 
536
  INSERT INTO log VALUES(COLLATION(�����1));
 
537
  INSERT INTO log VALUES(COLLATION('�����'));
 
538
  INSERT INTO log VALUES(COLLATION(_koi8r    '�����'));
 
539
  INSERT INTO log VALUES(COLLATION(_utf8 'текст'));
 
540
  INSERT INTO log VALUES(@@collation_connection);
 
541
  INSERT INTO log VALUES(@@character_set_client);
 
542
 
 
543
  SET @a1 = '�����';
 
544
  SET @a1 = _koi8r    '�����';
 
545
  SET @a2 = _utf8 'текст';
 
546
END|
 
547
 
 
548
--echo
 
549
 
 
550
#     - Trigger trg2
 
551
 
 
552
CREATE TRIGGER trg2 AFTER INSERT ON t1 FOR EACH ROW
 
553
BEGIN
 
554
  DECLARE �����1 CHAR(10) CHARACTER SET utf8;
 
555
 
 
556
  INSERT INTO log VALUES(COLLATION(�����1));
 
557
  INSERT INTO log VALUES(COLLATION('�����'));
 
558
  INSERT INTO log VALUES(COLLATION(_koi8r    '�����'));
 
559
  INSERT INTO log VALUES(COLLATION(_utf8 'текст'));
 
560
  INSERT INTO log VALUES(@@collation_connection);
 
561
  INSERT INTO log VALUES(@@character_set_client);
 
562
 
 
563
  SET @b1 = '�����';
 
564
  SET @b1 = _koi8r    '�����';
 
565
  SET @b2 = _utf8 'текст';
 
566
END|
 
567
 
 
568
--echo
 
569
 
 
570
#     - Trigger trg3
 
571
 
 
572
CREATE TRIGGER mysqltest2.trg3 BEFORE INSERT ON mysqltest2.t1 FOR EACH ROW
 
573
BEGIN
 
574
  DECLARE �����1 CHAR(10);
 
575
 
 
576
  INSERT INTO log VALUES(COLLATION(�����1));
 
577
  INSERT INTO log VALUES(COLLATION('�����'));
 
578
  INSERT INTO log VALUES(COLLATION(_koi8r    '�����'));
 
579
  INSERT INTO log VALUES(COLLATION(_utf8 'текст'));
 
580
  INSERT INTO log VALUES(@@collation_connection);
 
581
  INSERT INTO log VALUES(@@character_set_client);
 
582
 
 
583
  SET @a1 = '�����';
 
584
  SET @a1 = _koi8r    '�����';
 
585
  SET @a2 = _utf8 'текст';
 
586
END|
 
587
 
 
588
--echo
 
589
 
 
590
#     - Trigger trg4
 
591
 
 
592
CREATE TRIGGER mysqltest2.trg4 AFTER INSERT ON mysqltest2.t1 FOR EACH ROW
 
593
BEGIN
 
594
  DECLARE �����1 CHAR(10) CHARACTER SET utf8;
 
595
 
 
596
  INSERT INTO log VALUES(COLLATION(�����1));
 
597
  INSERT INTO log VALUES(COLLATION('�����'));
 
598
  INSERT INTO log VALUES(COLLATION(_koi8r    '�����'));
 
599
  INSERT INTO log VALUES(COLLATION(_utf8 'текст'));
 
600
  INSERT INTO log VALUES(@@collation_connection);
 
601
  INSERT INTO log VALUES(@@character_set_client);
 
602
 
 
603
  SET @b1 = '�����';
 
604
  SET @b1 = _koi8r    '�����';
 
605
  SET @b2 = _utf8 'текст';
 
606
END|
 
607
 
 
608
--echo
 
609
 
 
610
#
 
611
# First-round checks.
 
612
#
 
613
 
 
614
--source include/ddl_i18n.check_triggers.inc
 
615
 
 
616
#
 
617
# Change running environment (alter database character set, change session
 
618
# variables).
 
619
#
 
620
 
 
621
--echo
 
622
--echo
 
623
 
 
624
ALTER DATABASE mysqltest1 COLLATE cp866_general_ci|
 
625
ALTER DATABASE mysqltest2 COLLATE cp866_general_ci|
 
626
 
 
627
#
 
628
# Second-round checks:
 
629
#
 
630
 
 
631
#  - Flush table cache;
 
632
 
 
633
ALTER TABLE t1 ADD COLUMN fake INT|
 
634
ALTER TABLE t1 DROP COLUMN fake|
 
635
 
 
636
ALTER TABLE mysqltest2.t1 ADD COLUMN fake INT|
 
637
ALTER TABLE mysqltest2.t1 DROP COLUMN fake|
 
638
 
 
639
#   - Switch environment variables and initiate loading of triggers
 
640
#     (connect using NULL database);
 
641
 
 
642
--connect (con2,localhost,root,,)
 
643
--echo
 
644
--echo ---> connection: con2
 
645
 
 
646
SET @@character_set_client= cp1251|
 
647
SET @@character_set_results= cp1251|
 
648
SET @@collation_connection= cp1251_general_ci|
 
649
 
 
650
INSERT INTO mysqltest1.t1 VALUES(0)|
 
651
INSERT INTO mysqltest2.t1 VALUES(0)|
 
652
 
 
653
DELETE FROM mysqltest1.log|
 
654
DELETE FROM mysqltest2.log|
 
655
 
 
656
#   - Restore environment;
 
657
 
 
658
set names koi8r|
 
659
 
 
660
use mysqltest1|
 
661
 
 
662
#   - Check!
 
663
 
 
664
--source include/ddl_i18n.check_triggers.inc
 
665
 
 
666
#
 
667
# Check mysqldump.
 
668
#
 
669
 
 
670
#  - Dump mysqltest1, mysqltest2;
 
671
 
 
672
--echo
 
673
--echo ---> Dump of mysqltest1
 
674
 
 
675
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest1
 
676
 
 
677
--echo
 
678
--echo ---> Dumping mysqltest1 to ddl_i18n_koi8r.triggers.mysqltest1.sql
 
679
 
 
680
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.triggers.mysqltest1.sql
 
681
 
 
682
--echo
 
683
--echo ---> Dump of mysqltest2
 
684
 
 
685
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest2
 
686
 
 
687
--echo
 
688
--echo ---> Dumping mysqltest2 to ddl_i18n_koi8r.triggers.mysqltest2.sql
 
689
 
 
690
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.triggers.mysqltest2.sql
 
691
 
 
692
#   - Clean mysqltest1, mysqltest2;
 
693
 
 
694
--echo
 
695
--echo
 
696
 
 
697
DROP DATABASE mysqltest1|
 
698
DROP DATABASE mysqltest2|
 
699
 
 
700
#   - Restore mysqltest1;
 
701
 
 
702
--echo
 
703
--echo
 
704
 
 
705
--echo ---> Restoring mysqltest1...
 
706
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.triggers.mysqltest1.sql
 
707
 
 
708
--echo ---> Restoring mysqltest2...
 
709
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.triggers.mysqltest2.sql
 
710
 
 
711
#
 
712
# Third-round checks.
 
713
#
 
714
 
 
715
#   - Flush table cache;
 
716
 
 
717
ALTER TABLE mysqltest1.t1 ADD COLUMN fake INT|
 
718
ALTER TABLE mysqltest1.t1 DROP COLUMN fake|
 
719
 
 
720
ALTER TABLE mysqltest2.t1 ADD COLUMN fake INT|
 
721
ALTER TABLE mysqltest2.t1 DROP COLUMN fake|
 
722
 
 
723
#   - Switch environment variables and initiate loading of triggers
 
724
#     (connect using NULL database);
 
725
 
 
726
--connect (con3,localhost,root,,)
 
727
--echo
 
728
--echo ---> connection: con3
 
729
 
 
730
SET @@character_set_client= cp1251|
 
731
SET @@character_set_results= cp1251|
 
732
SET @@collation_connection= cp1251_general_ci|
 
733
 
 
734
INSERT INTO mysqltest1.t1 VALUES(0)|
 
735
INSERT INTO mysqltest2.t1 VALUES(0)|
 
736
 
 
737
DELETE FROM mysqltest1.log|
 
738
DELETE FROM mysqltest2.log|
 
739
 
 
740
#   - Restore environment;
 
741
 
 
742
set names koi8r|
 
743
 
 
744
use mysqltest1|
 
745
 
 
746
#   - Check!
 
747
 
 
748
--source include/ddl_i18n.check_triggers.inc
 
749
 
 
750
#
 
751
# Cleanup.
 
752
#
 
753
 
 
754
--connection default
 
755
--echo
 
756
--echo ---> connection: default
 
757
 
 
758
--disconnect con2
 
759
--disconnect con3
 
760
 
 
761
use test|
 
762
 
 
763
DROP DATABASE mysqltest1|
 
764
DROP DATABASE mysqltest2|
 
765
 
 
766
###########################################################################
 
767
#
 
768
# * Events
 
769
#
 
770
# We don't have EXECUTE EVENT so far, so this test is limited. It checks that
 
771
# event with non-latin1 symbols can be created, dumped, restored and SHOW
 
772
# statements work properly.
 
773
#
 
774
###########################################################################
 
775
 
 
776
--echo
 
777
--echo -------------------------------------------------------------------
 
778
--echo Events
 
779
--echo -------------------------------------------------------------------
 
780
--echo
 
781
 
 
782
#
 
783
# Preparation:
 
784
#
 
785
 
 
786
#   - Create database with fixed, pre-defined character set.
 
787
 
 
788
--disable_warnings
 
789
DROP DATABASE IF EXISTS mysqltest1|
 
790
DROP DATABASE IF EXISTS mysqltest2|
 
791
--enable_warnings
 
792
 
 
793
CREATE DATABASE mysqltest1 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci|
 
794
CREATE DATABASE mysqltest2 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci|
 
795
 
 
796
use mysqltest1|
 
797
 
 
798
#   - Create two stored routines -- with and without explicit
 
799
#     CHARSET-clause for SP-variable;
 
800
#
 
801
 
 
802
--echo
 
803
 
 
804
#     - Event ev1
 
805
 
 
806
CREATE EVENT ev1 ON SCHEDULE AT '2030-01-01 00:00:00' DO
 
807
BEGIN
 
808
  DECLARE �����1 CHAR(10);
 
809
 
 
810
  SELECT
 
811
    COLLATION(�����1) AS c1,
 
812
    COLLATION('�����') AS c2,
 
813
    COLLATION(_koi8r    '�����') AS c3,
 
814
    COLLATION(_utf8 'текст') AS c4,
 
815
    @@collation_connection AS c5,
 
816
    @@character_set_client AS c6;
 
817
END|
 
818
 
 
819
--echo
 
820
 
 
821
#     - Event ev2
 
822
 
 
823
CREATE EVENT ev2 ON SCHEDULE AT '2030-01-01 00:00:00' DO
 
824
BEGIN
 
825
  DECLARE �����1 CHAR(10) CHARACTER SET utf8;
 
826
 
 
827
  SELECT
 
828
    COLLATION(�����1) AS c1,
 
829
    COLLATION('�����') AS c2,
 
830
    COLLATION(_koi8r    '�����') AS c3,
 
831
    COLLATION(_utf8 'текст') AS c4,
 
832
    @@collation_connection AS c5,
 
833
    @@character_set_client AS c6;
 
834
END|
 
835
 
 
836
--echo
 
837
 
 
838
#     - Event ev3
 
839
 
 
840
CREATE EVENT mysqltest2.ev3 ON SCHEDULE AT '2030-01-01 00:00:00' DO
 
841
BEGIN
 
842
  DECLARE �����1 CHAR(10) CHARACTER SET utf8;
 
843
 
 
844
  SELECT
 
845
    COLLATION(�����1) AS c1,
 
846
    COLLATION('�����') AS c2,
 
847
    COLLATION(_koi8r    '�����') AS c3,
 
848
    COLLATION(_utf8 'текст') AS c4,
 
849
    @@collation_connection AS c5,
 
850
    @@character_set_client AS c6;
 
851
END|
 
852
 
 
853
--echo
 
854
 
 
855
#     - Event ev4
 
856
 
 
857
CREATE EVENT mysqltest2.ev4 ON SCHEDULE AT '2030-01-01 00:00:00' DO
 
858
BEGIN
 
859
  DECLARE �����1 CHAR(10) CHARACTER SET utf8;
 
860
 
 
861
  SELECT
 
862
    COLLATION(�����1) AS c1,
 
863
    COLLATION('�����') AS c2,
 
864
    COLLATION(_koi8r    '�����') AS c3,
 
865
    COLLATION(_utf8 'текст') AS c4,
 
866
    @@collation_connection AS c5,
 
867
    @@character_set_client AS c6;
 
868
END|
 
869
 
 
870
--echo
 
871
 
 
872
 
 
873
#
 
874
# First-round checks.
 
875
#
 
876
 
 
877
--source include/ddl_i18n.check_events.inc
 
878
 
 
879
#
 
880
# Change running environment (alter database character set, change session
 
881
# variables).
 
882
#
 
883
 
 
884
--echo
 
885
--echo
 
886
 
 
887
ALTER DATABASE mysqltest1 COLLATE cp866_general_ci|
 
888
ALTER DATABASE mysqltest2 COLLATE cp866_general_ci|
 
889
 
 
890
#
 
891
# Second-round checks:
 
892
#
 
893
 
 
894
#   - Change connection to flush cache;
 
895
 
 
896
--connect (con2,localhost,root,,mysqltest1)
 
897
--echo
 
898
--echo ---> connection: con2
 
899
 
 
900
#   - Switch environment variables and trigger loading stored procedures;
 
901
 
 
902
SET @@character_set_client= cp1251|
 
903
SET @@character_set_results= cp1251|
 
904
SET @@collation_connection= cp1251_general_ci|
 
905
 
 
906
--disable_result_log
 
907
SHOW CREATE EVENT ev1|
 
908
SHOW CREATE EVENT ev2|
 
909
SHOW CREATE EVENT mysqltest2.ev3|
 
910
SHOW CREATE EVENT mysqltest2.ev4|
 
911
--enable_result_log
 
912
 
 
913
#   - Restore environment;
 
914
 
 
915
set names koi8r|
 
916
 
 
917
#   - Check!
 
918
 
 
919
--source include/ddl_i18n.check_events.inc
 
920
 
 
921
#
 
922
# Check mysqldump.
 
923
#
 
924
 
 
925
#  - Dump mysqltest1, mysqltest2;
 
926
 
 
927
--echo
 
928
--echo ---> Dump of mysqltest1
 
929
 
 
930
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest1
 
931
 
 
932
--echo
 
933
--echo ---> Dumping mysqltest1 to ddl_i18n_koi8r.events.mysqltest1.sql
 
934
 
 
935
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest1 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.events.mysqltest1.sql
 
936
 
 
937
--echo
 
938
--echo ---> Dump of mysqltest2
 
939
 
 
940
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest2
 
941
 
 
942
--echo
 
943
--echo ---> Dumping mysqltest2 to ddl_i18n_koi8r.events.mysqltest2.sql
 
944
 
 
945
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest2 > $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.events.mysqltest2.sql
 
946
 
 
947
#   - Clean mysqltest1, mysqltest2;
 
948
 
 
949
--echo
 
950
--echo
 
951
 
 
952
DROP DATABASE mysqltest1|
 
953
DROP DATABASE mysqltest2|
 
954
 
 
955
#   - Restore mysqltest1;
 
956
 
 
957
--echo
 
958
--echo
 
959
 
 
960
--echo ---> Restoring mysqltest1...
 
961
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.events.mysqltest1.sql
 
962
 
 
963
--echo ---> Restoring mysqltest2...
 
964
--exec $MYSQL test < $MYSQLTEST_VARDIR/tmp/ddl_i18n_koi8r.events.mysqltest2.sql
 
965
 
 
966
#
 
967
# Third-round checks.
 
968
#
 
969
 
 
970
#   - Change connection to flush cache;
 
971
 
 
972
--connect (con3,localhost,root,,mysqltest1)
 
973
--echo
 
974
--echo ---> connection: con3
 
975
 
 
976
#   - Switch environment variables and trigger loading stored procedures;
 
977
 
 
978
SET @@character_set_client= cp1251|
 
979
SET @@character_set_results= cp1251|
 
980
SET @@collation_connection= cp1251_general_ci|
 
981
 
 
982
--disable_result_log
 
983
SHOW CREATE EVENT ev1|
 
984
SHOW CREATE EVENT ev2|
 
985
SHOW CREATE EVENT mysqltest2.ev3|
 
986
SHOW CREATE EVENT mysqltest2.ev4|
 
987
--enable_result_log
 
988
 
 
989
#   - Restore environment;
 
990
 
 
991
set names koi8r|
 
992
 
 
993
#   - Check!
 
994
 
 
995
--source include/ddl_i18n.check_events.inc
 
996
 
 
997
###########################################################################
 
998
#
 
999
# * DDL statements inside stored routine.
 
1000
#
 
1001
# Here we check that DDL statements use actual database collation even if they
 
1002
# are called from stored routine.
 
1003
#
 
1004
###########################################################################
 
1005
 
 
1006
--echo
 
1007
--echo -------------------------------------------------------------------
 
1008
--echo DDL statements within stored routine.
 
1009
--echo -------------------------------------------------------------------
 
1010
--echo
 
1011
 
 
1012
#
 
1013
# Preparation:
 
1014
#
 
1015
 
 
1016
#   - Create database with fixed, pre-defined character set.
 
1017
 
 
1018
--disable_warnings
 
1019
DROP DATABASE IF EXISTS mysqltest1|
 
1020
DROP DATABASE IF EXISTS mysqltest2|
 
1021
--enable_warnings
 
1022
 
 
1023
CREATE DATABASE mysqltest1 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci|
 
1024
CREATE DATABASE mysqltest2 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci|
 
1025
 
 
1026
use mysqltest1|
 
1027
 
 
1028
#   - Create procedures;
 
1029
 
 
1030
--echo
 
1031
 
 
1032
CREATE PROCEDURE p1()
 
1033
BEGIN
 
1034
  CREATE TABLE t1(col1 VARCHAR(10));
 
1035
  SHOW CREATE TABLE t1;
 
1036
END|
 
1037
 
 
1038
--echo
 
1039
 
 
1040
CREATE PROCEDURE mysqltest2.p2()
 
1041
BEGIN
 
1042
  CREATE TABLE t2(col1 VARCHAR(10));
 
1043
  SHOW CREATE TABLE t2;
 
1044
END|
 
1045
 
 
1046
--echo
 
1047
 
 
1048
#
 
1049
# First-round checks.
 
1050
#
 
1051
 
 
1052
CALL p1()|
 
1053
 
 
1054
--echo
 
1055
 
 
1056
SHOW CREATE TABLE t1|
 
1057
 
 
1058
--echo
 
1059
--echo
 
1060
 
 
1061
CALL mysqltest2.p2()|
 
1062
 
 
1063
--echo
 
1064
 
 
1065
SHOW CREATE TABLE mysqltest2.t2|
 
1066
 
 
1067
#
 
1068
# Alter database.
 
1069
#
 
1070
 
 
1071
--echo
 
1072
 
 
1073
ALTER DATABASE mysqltest1 COLLATE cp1251_general_cs|
 
1074
ALTER DATABASE mysqltest2 COLLATE cp1251_general_cs|
 
1075
 
 
1076
DROP TABLE t1|
 
1077
DROP TABLE mysqltest2.t2|
 
1078
 
 
1079
--echo
 
1080
 
 
1081
#
 
1082
# Second-round checks.
 
1083
#
 
1084
 
 
1085
CALL p1()|
 
1086
 
 
1087
--echo
 
1088
 
 
1089
SHOW CREATE TABLE t1|
 
1090
 
 
1091
--echo
 
1092
--echo
 
1093
 
 
1094
CALL mysqltest2.p2()|
 
1095
 
 
1096
--echo
 
1097
 
 
1098
SHOW CREATE TABLE mysqltest2.t2|
 
1099
 
 
1100
###########################################################################
 
1101
#
 
1102
# That's it.
 
1103
#
 
1104
###########################################################################
 
1105
 
 
1106
#
 
1107
# Cleanup.
 
1108
#
 
1109
 
 
1110
--connection default
 
1111
--echo
 
1112
--echo ---> connection: default
 
1113
 
 
1114
--disconnect con2
 
1115
--disconnect con3
 
1116
 
 
1117
use test|
 
1118
 
 
1119
DROP DATABASE mysqltest1|
 
1120
DROP DATABASE mysqltest2|