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