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