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