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