DP_S/build/lib/mysql/mysql-test/t/ddl_i18n_utf8.test

1150 lines
23 KiB
Plaintext
Raw Normal View History

2024-04-24 10:25:44 +08:00
# Objects to test:
# - stored procedures/functions;
# - triggers;
# - events;
# - views;
#
# For stored routines:
# - create a database with collation utf8_unicode_ci;
# - create an object, which
# - contains SP-var with explicit CHARSET-clause;
# - contains SP-var without CHARSET-clause;
# - contains text constant;
# - has localized routine/parameter names;
# - check:
# - execute;
# - SHOW CREATE output;
# - SHOW output;
# - SELECT FROM INFORMATION_SCHEMA output;
# - alter database character set;
# - change connection collation;
# - check again;
# - dump definition using mysqldump;
# - drop object;
# - restore object;
#
###########################################################################
#
# NOTE: this file contains text in UTF8 and KOI8-R encodings.
#
###########################################################################
# Test requires server to accept client connections (for mysqldump portions)
--source include/not_embedded.inc
--source include/have_utf8.inc
--source include/have_cp866.inc
--source include/have_cp1251.inc
--source include/have_koi8r.inc
###########################################################################
set names utf8;
delimiter |;
###########################################################################
#
# * Views.
#
###########################################################################
--echo
--echo -------------------------------------------------------------------
--echo Views
--echo -------------------------------------------------------------------
--echo
#
# Preparation:
#
# - Create database with fixed, pre-defined character set.
--disable_warnings
DROP DATABASE IF EXISTS mysqltest1|
--enable_warnings
CREATE DATABASE mysqltest1 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci|
use mysqltest1|
CREATE TABLE t1(кол INT)|
INSERT INTO t1 VALUES(1)|
# - Create views;
--echo
CREATE VIEW v1 AS
SELECT 'тест' AS c1, кол AS c2
FROM t1|
--echo
CREATE VIEW v2 AS SELECT _koi8r'<27><><EFBFBD><EFBFBD>' as c1|
--echo
CREATE VIEW v3 AS SELECT _koi8r'<27><><EFBFBD><EFBFBD>'|
--echo
#
# First-round checks.
#
--source include/ddl_i18n.check_views.inc
#
# Change running environment (alter database character set, change session
# variables).
#
--echo
--echo
ALTER DATABASE mysqltest1 COLLATE cp866_general_ci|
#
# Second-round checks:
#
# - Change connection to flush cache;
--connect (con2,localhost,root,,)
--echo
--echo ---> connection: con2
# - Switch environment variables and trigger loading views;
SET @@character_set_client= cp1251|
SET @@character_set_results= cp1251|
SET @@collation_connection= cp1251_general_ci|
--disable_result_log
SELECT * FROM mysqltest1.v1|
SELECT * FROM mysqltest1.v2|
SELECT * FROM mysqltest1.v3|
--enable_result_log
use mysqltest1|
# - Restore environment;
set names utf8|
# - Check!
--source include/ddl_i18n.check_views.inc
#
# Check mysqldump.
#
# - Dump mysqltest1;
--let $views_dump1 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8views.mysqltest1.sql
--echo
--echo ---> Dumping mysqltest1 to ddl_i18n_utf8views.mysqltest1.sql
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --databases mysqltest1 > $views_dump1
# - Clean mysqltest1;
--echo
--echo
DROP DATABASE mysqltest1|
# - Restore mysqltest1;
--echo
--echo
--echo ---> Restoring mysqltest1...
--exec $MYSQL test < $views_dump1
--remove_file $views_dump1
#
# Third-round checks.
#
# - Change connection to flush cache;
--connect (con3,localhost,root,,)
--echo
--echo ---> connection: con3
# - Switch environment variables and trigger loading views;
SET @@character_set_client= cp1251|
SET @@character_set_results= cp1251|
SET @@collation_connection= cp1251_general_ci|
--disable_result_log
SELECT * FROM mysqltest1.v1|
SELECT * FROM mysqltest1.v2|
SELECT * FROM mysqltest1.v3|
--enable_result_log
use mysqltest1|
# - Restore environment;
set names utf8|
# - Check!
--source include/ddl_i18n.check_views.inc
#
# Cleanup.
#
--connection default
--echo
--echo ---> connection: default
--disconnect con2
--disconnect con3
use test|
DROP DATABASE mysqltest1|
###########################################################################
#
# * Stored procedures/functions.
#
###########################################################################
--echo
--echo -------------------------------------------------------------------
--echo Stored procedures/functions
--echo -------------------------------------------------------------------
--echo
#
# Preparation:
#
# - Create database with fixed, pre-defined character set.
--disable_warnings
DROP DATABASE IF EXISTS mysqltest1|
DROP DATABASE IF EXISTS mysqltest2|
--enable_warnings
CREATE DATABASE mysqltest1 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci|
CREATE DATABASE mysqltest2 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci|
use mysqltest1|
# - Create two stored routines -- with and without explicit
# CHARSET-clause for SP-variable;
#
--echo
# - Procedure p1
CREATE PROCEDURE p1(
INOUT парам1 CHAR(10),
OUT парам2 CHAR(10))
BEGIN
DECLARE перем1 CHAR(10);
SELECT
COLLATION(перем1) AS c1,
COLLATION(парам1) AS c2,
COLLATION(парам2) AS c3;
SELECT
COLLATION('текст') AS c4,
COLLATION(_utf8 'текст') AS c5,
COLLATION(_koi8r '<27><><EFBFBD><EFBFBD><EFBFBD>') AS c6,
@@collation_connection AS c7,
@@character_set_client AS c8;
SET парам1 = 'a';
SET парам2 = 'b';
END|
--echo
# - Procedure p2
CREATE PROCEDURE p2(
INOUT парам1 CHAR(10) CHARACTER SET utf8,
OUT парам2 CHAR(10) CHARACTER SET utf8)
BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
COLLATION(парам1) AS c2,
COLLATION(парам2) AS c3;
SELECT
COLLATION('текст') AS c4,
COLLATION(_utf8 'текст') AS c5,
COLLATION(_koi8r '<27><><EFBFBD><EFBFBD><EFBFBD>') AS c6,
@@collation_connection AS c7,
@@character_set_client AS c8;
SET парам1 = 'a';
SET парам2 = 'b';
END|
--echo
# - Procedure p3
CREATE PROCEDURE mysqltest2.p3(
INOUT парам1 CHAR(10),
OUT парам2 CHAR(10))
BEGIN
DECLARE перем1 CHAR(10);
SELECT
COLLATION(перем1) AS c1,
COLLATION(парам1) AS c2,
COLLATION(парам2) AS c3;
SELECT
COLLATION('текст') AS c4,
COLLATION(_utf8 'текст') AS c5,
COLLATION(_koi8r '<27><><EFBFBD><EFBFBD><EFBFBD>') AS c6,
@@collation_connection AS c7,
@@character_set_client AS c8;
SET парам1 = 'a';
SET парам2 = 'b';
END|
--echo
# - Procedure p4
CREATE PROCEDURE mysqltest2.p4(
INOUT парам1 CHAR(10) CHARACTER SET utf8,
OUT парам2 CHAR(10) CHARACTER SET utf8)
BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
COLLATION(парам1) AS c2,
COLLATION(парам2) AS c3;
SELECT
COLLATION('текст') AS c4,
COLLATION(_utf8 'текст') AS c5,
COLLATION(_koi8r '<27><><EFBFBD><EFBFBD><EFBFBD>') AS c6,
@@collation_connection AS c7,
@@character_set_client AS c8;
SET парам1 = 'a';
SET парам2 = 'b';
END|
#
# First-round checks.
#
--source include/ddl_i18n.check_sp.inc
#
# Change running environment (alter database character set, change session
# variables).
#
--echo
--echo
ALTER DATABASE mysqltest1 COLLATE cp866_general_ci|
ALTER DATABASE mysqltest2 COLLATE cp866_general_ci|
#
# Second-round checks:
#
# - Change connection to flush SP-cache;
--connect (con2,localhost,root,,mysqltest1)
--echo
--echo ---> connection: con2
# - Switch environment variables and trigger loading stored procedures;
SET @@character_set_client= cp1251|
SET @@character_set_results= cp1251|
SET @@collation_connection= cp1251_general_ci|
CALL p1(@a, @b)|
CALL p2(@a, @b)|
CALL mysqltest2.p3(@a, @b)|
CALL mysqltest2.p4(@a, @b)|
# - Restore environment;
set names utf8|
# - Check!
--source include/ddl_i18n.check_sp.inc
#
# Check mysqldump.
#
# - Dump mysqltest1, mysqltest2;
--let $sp_dump1 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8sp.mysqltest1.sql
--let $sp_dump2 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8sp.mysqltest2.sql
--echo
--echo ---> Dump of mysqltest1
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest1
--echo
--echo ---> Dumping mysqltest1 to ddl_i18n_utf8sp.mysqltest1.sql
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest1 > $sp_dump1
--echo
--echo ---> Dump of mysqltest2
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest2
--echo
--echo ---> Dumping mysqltest2 to ddl_i18n_utf8sp.mysqltest2.sql
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --routines --databases mysqltest2 > $sp_dump2
# - Clean mysqltest1, mysqltest2;
--echo
--echo
DROP DATABASE mysqltest1|
DROP DATABASE mysqltest2|
# - Restore mysqltest1;
--echo
--echo
--echo ---> Restoring mysqltest1...
--exec $MYSQL test < $sp_dump1
--echo ---> Restoring mysqltest2...
--exec $MYSQL test < $sp_dump2
--remove_file $sp_dump1
--remove_file $sp_dump2
#
# Third-round checks.
#
# - Change connection to flush SP-cache;
--connect (con3,localhost,root,,mysqltest1)
--echo
--echo ---> connection: con3
# - Switch environment variables and trigger loading stored procedures;
SET @@character_set_client= cp1251|
SET @@character_set_results= cp1251|
SET @@collation_connection= cp1251_general_ci|
CALL p1(@a, @b)|
CALL p2(@a, @b)|
CALL mysqltest2.p3(@a, @b)|
CALL mysqltest2.p4(@a, @b)|
# - Restore environment;
set names utf8|
# - Check!
--source include/ddl_i18n.check_sp.inc
#
# Cleanup.
#
--connection default
--echo
--echo ---> connection: default
--disconnect con2
--disconnect con3
use test|
DROP DATABASE mysqltest1|
DROP DATABASE mysqltest2|
###########################################################################
#
# * Triggers.
#
###########################################################################
--echo
--echo -------------------------------------------------------------------
--echo Triggers
--echo -------------------------------------------------------------------
--echo
#
# Preparation:
#
# - Create database with fixed, pre-defined character set;
--disable_warnings
DROP DATABASE IF EXISTS mysqltest1|
DROP DATABASE IF EXISTS mysqltest2|
--enable_warnings
CREATE DATABASE mysqltest1 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci|
CREATE DATABASE mysqltest2 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci|
use mysqltest1|
# - Create tables for triggers;
CREATE TABLE t1(c INT)|
CREATE TABLE mysqltest2.t1(c INT)|
# - Create log tables;
CREATE TABLE log(msg VARCHAR(255))|
CREATE TABLE mysqltest2.log(msg VARCHAR(255))|
# - Create triggers -- with and without explicit CHARSET-clause for
# SP-variable;
#
--echo
# - Trigger trg1
CREATE TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW
BEGIN
DECLARE перем1 CHAR(10);
INSERT INTO log VALUES(COLLATION(перем1));
INSERT INTO log VALUES(COLLATION('текст'));
INSERT INTO log VALUES(COLLATION(_utf8 'текст'));
INSERT INTO log VALUES(COLLATION(_koi8r '<27><><EFBFBD><EFBFBD><EFBFBD>'));
INSERT INTO log VALUES(@@collation_connection);
INSERT INTO log VALUES(@@character_set_client);
SET @a1 = 'текст';
SET @a2 = _utf8 'текст';
SET @a3 = _koi8r '<27><><EFBFBD><EFBFBD><EFBFBD>';
END|
--echo
# - Trigger trg2
CREATE TRIGGER trg2 AFTER INSERT ON t1 FOR EACH ROW
BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
INSERT INTO log VALUES(COLLATION(перем1));
INSERT INTO log VALUES(COLLATION('текст'));
INSERT INTO log VALUES(COLLATION(_utf8 'текст'));
INSERT INTO log VALUES(COLLATION(_koi8r '<27><><EFBFBD><EFBFBD><EFBFBD>'));
INSERT INTO log VALUES(@@collation_connection);
INSERT INTO log VALUES(@@character_set_client);
SET @b1 = 'текст';
SET @b2 = _utf8 'текст';
SET @b3 = _koi8r '<27><><EFBFBD><EFBFBD><EFBFBD>';
END|
--echo
# - Trigger trg3
CREATE TRIGGER mysqltest2.trg3 BEFORE INSERT ON mysqltest2.t1 FOR EACH ROW
BEGIN
DECLARE перем1 CHAR(10);
INSERT INTO log VALUES(COLLATION(перем1));
INSERT INTO log VALUES(COLLATION('текст'));
INSERT INTO log VALUES(COLLATION(_utf8 'текст'));
INSERT INTO log VALUES(COLLATION(_koi8r '<27><><EFBFBD><EFBFBD><EFBFBD>'));
INSERT INTO log VALUES(@@collation_connection);
INSERT INTO log VALUES(@@character_set_client);
SET @a1 = 'текст';
SET @a2 = _utf8 'текст';
SET @a3 = _koi8r '<27><><EFBFBD><EFBFBD><EFBFBD>';
END|
--echo
# - Trigger trg4
CREATE TRIGGER mysqltest2.trg4 AFTER INSERT ON mysqltest2.t1 FOR EACH ROW
BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
INSERT INTO log VALUES(COLLATION(перем1));
INSERT INTO log VALUES(COLLATION('текст'));
INSERT INTO log VALUES(COLLATION(_utf8 'текст'));
INSERT INTO log VALUES(COLLATION(_koi8r '<27><><EFBFBD><EFBFBD><EFBFBD>'));
INSERT INTO log VALUES(@@collation_connection);
INSERT INTO log VALUES(@@character_set_client);
SET @b1 = 'текст';
SET @b2 = _utf8 'текст';
SET @b3 = _koi8r '<27><><EFBFBD><EFBFBD><EFBFBD>';
END|
--echo
#
# First-round checks.
#
--source include/ddl_i18n.check_triggers.inc
#
# Change running environment (alter database character set, change session
# variables).
#
--echo
--echo
ALTER DATABASE mysqltest1 COLLATE cp866_general_ci|
ALTER DATABASE mysqltest2 COLLATE cp866_general_ci|
#
# Second-round checks:
#
# - Flush table cache;
ALTER TABLE t1 ADD COLUMN fake INT|
ALTER TABLE t1 DROP COLUMN fake|
ALTER TABLE mysqltest2.t1 ADD COLUMN fake INT|
ALTER TABLE mysqltest2.t1 DROP COLUMN fake|
# - Switch environment variables and initiate loading of triggers
# (connect using NULL database);
--connect (con2,localhost,root,,)
--echo
--echo ---> connection: con2
SET @@character_set_client= cp1251|
SET @@character_set_results= cp1251|
SET @@collation_connection= cp1251_general_ci|
INSERT INTO mysqltest1.t1 VALUES(0)|
INSERT INTO mysqltest2.t1 VALUES(0)|
DELETE FROM mysqltest1.log|
DELETE FROM mysqltest2.log|
# - Restore environment;
set names utf8|
use mysqltest1|
# - Check!
--source include/ddl_i18n.check_triggers.inc
#
# Check mysqldump.
#
# - Dump mysqltest1, mysqltest2;
--let $triggers_dump1 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8triggers.mysqltest1.sql
--let $triggers_dump2 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8triggers.mysqltest2.sql
--echo
--echo ---> Dump of mysqltest1
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest1
--echo
--echo ---> Dumping mysqltest1 to ddl_i18n_utf8triggers.mysqltest1.sql
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest1 > $triggers_dump1
--echo
--echo ---> Dump of mysqltest2
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest2
--echo
--echo ---> Dumping mysqltest2 to ddl_i18n_utf8triggers.mysqltest2.sql
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --triggers --databases mysqltest2 > $triggers_dump2
# - Clean mysqltest1, mysqltest2;
--echo
--echo
DROP DATABASE mysqltest1|
DROP DATABASE mysqltest2|
# - Restore mysqltest1;
--echo
--echo
--echo ---> Restoring mysqltest1...
--exec $MYSQL test < $triggers_dump1
--echo ---> Restoring mysqltest2...
--exec $MYSQL test < $triggers_dump2
--remove_file $triggers_dump1
--remove_file $triggers_dump2
#
# Third-round checks.
#
# - Flush table cache;
ALTER TABLE mysqltest1.t1 ADD COLUMN fake INT|
ALTER TABLE mysqltest1.t1 DROP COLUMN fake|
ALTER TABLE mysqltest2.t1 ADD COLUMN fake INT|
ALTER TABLE mysqltest2.t1 DROP COLUMN fake|
# - Switch environment variables and initiate loading of triggers
# (connect using NULL database);
--connect (con3,localhost,root,,)
--echo
--echo ---> connection: con3
SET @@character_set_client= cp1251|
SET @@character_set_results= cp1251|
SET @@collation_connection= cp1251_general_ci|
INSERT INTO mysqltest1.t1 VALUES(0)|
INSERT INTO mysqltest2.t1 VALUES(0)|
DELETE FROM mysqltest1.log|
DELETE FROM mysqltest2.log|
# - Restore environment;
set names utf8|
use mysqltest1|
# - Check!
--source include/ddl_i18n.check_triggers.inc
#
# Cleanup.
#
--connection default
--echo
--echo ---> connection: default
--disconnect con2
--disconnect con3
use test|
DROP DATABASE mysqltest1|
DROP DATABASE mysqltest2|
###########################################################################
#
# * Events
#
# We don't have EXECUTE EVENT so far, so this test is limited. It checks that
# event with non-latin1 symbols can be created, dumped, restored and SHOW
# statements work properly.
#
###########################################################################
--echo
--echo -------------------------------------------------------------------
--echo Events
--echo -------------------------------------------------------------------
--echo
#
# Preparation:
#
# - Create database with fixed, pre-defined character set.
--disable_warnings
DROP DATABASE IF EXISTS mysqltest1|
DROP DATABASE IF EXISTS mysqltest2|
--enable_warnings
CREATE DATABASE mysqltest1 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci|
CREATE DATABASE mysqltest2 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci|
use mysqltest1|
# - Create two stored routines -- with and without explicit
# CHARSET-clause for SP-variable;
#
--echo
# - Event ev1
CREATE EVENT ev1 ON SCHEDULE AT '2030-01-01 00:00:00' DO
BEGIN
DECLARE перем1 CHAR(10);
SELECT
COLLATION(перем1) AS c1,
COLLATION('текст') AS c2,
COLLATION(_utf8 'текст') AS c3,
COLLATION(_koi8r '<27><><EFBFBD><EFBFBD><EFBFBD>') AS c4,
@@collation_connection AS c5,
@@character_set_client AS c6;
END|
--echo
# - Event ev2
CREATE EVENT ev2 ON SCHEDULE AT '2030-01-01 00:00:00' DO
BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
COLLATION('текст') AS c2,
COLLATION(_utf8 'текст') AS c3,
COLLATION(_koi8r '<27><><EFBFBD><EFBFBD><EFBFBD>') AS c4,
@@collation_connection AS c5,
@@character_set_client AS c6;
END|
--echo
# - Event ev3
CREATE EVENT mysqltest2.ev3 ON SCHEDULE AT '2030-01-01 00:00:00' DO
BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
COLLATION('текст') AS c2,
COLLATION(_utf8 'текст') AS c3,
COLLATION(_koi8r '<27><><EFBFBD><EFBFBD><EFBFBD>') AS c4,
@@collation_connection AS c5,
@@character_set_client AS c6;
END|
--echo
# - Event ev4
CREATE EVENT mysqltest2.ev4 ON SCHEDULE AT '2030-01-01 00:00:00' DO
BEGIN
DECLARE перем1 CHAR(10) CHARACTER SET utf8;
SELECT
COLLATION(перем1) AS c1,
COLLATION('текст') AS c2,
COLLATION(_utf8 'текст') AS c3,
COLLATION(_koi8r '<27><><EFBFBD><EFBFBD><EFBFBD>') AS c4,
@@collation_connection AS c5,
@@character_set_client AS c6;
END|
--echo
#
# First-round checks.
#
--source include/ddl_i18n.check_events.inc
#
# Change running environment (alter database character set, change session
# variables).
#
--echo
--echo
ALTER DATABASE mysqltest1 COLLATE cp866_general_ci|
ALTER DATABASE mysqltest2 COLLATE cp866_general_ci|
#
# Second-round checks:
#
# - Change connection to flush cache;
--connect (con2,localhost,root,,mysqltest1)
--echo
--echo ---> connection: con2
# - Switch environment variables and trigger loading stored procedures;
SET @@character_set_client= cp1251|
SET @@character_set_results= cp1251|
SET @@collation_connection= cp1251_general_ci|
--disable_result_log
SHOW CREATE EVENT ev1|
SHOW CREATE EVENT ev2|
SHOW CREATE EVENT mysqltest2.ev3|
SHOW CREATE EVENT mysqltest2.ev4|
--enable_result_log
# - Restore environment;
set names utf8|
# - Check!
--source include/ddl_i18n.check_events.inc
#
# Check mysqldump.
#
# - Dump mysqltest1, mysqltest2;
--let $events_dump1 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8events.mysqltest1.sql
--let $events_dump2 = $MYSQLTEST_VARDIR/tmp/ddl_i18n_utf8events.mysqltest2.sql
--echo
--echo ---> Dump of mysqltest1
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest1
--echo
--echo ---> Dumping mysqltest1 to ddl_i18n_utf8events.mysqltest1.sql
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest1 > $events_dump1
--echo
--echo ---> Dump of mysqltest2
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest2
--echo
--echo ---> Dumping mysqltest2 to ddl_i18n_utf8events.mysqltest2.sql
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --compact --events --databases mysqltest2 > $events_dump2
# - Clean mysqltest1, mysqltest2;
--echo
--echo
DROP DATABASE mysqltest1|
DROP DATABASE mysqltest2|
# - Restore mysqltest1;
--echo
--echo
--echo ---> Restoring mysqltest1...
--exec $MYSQL test < $events_dump1
--echo ---> Restoring mysqltest2...
--exec $MYSQL test < $events_dump2
--remove_file $events_dump1
--remove_file $events_dump2
#
# Third-round checks.
#
# - Change connection to flush cache;
--connect (con3,localhost,root,,mysqltest1)
--echo
--echo ---> connection: con3
# - Switch environment variables and trigger loading stored procedures;
SET @@character_set_client= cp1251|
SET @@character_set_results= cp1251|
SET @@collation_connection= cp1251_general_ci|
--disable_result_log
SHOW CREATE EVENT ev1|
SHOW CREATE EVENT ev2|
SHOW CREATE EVENT mysqltest2.ev3|
SHOW CREATE EVENT mysqltest2.ev4|
--enable_result_log
# - Restore environment;
set names utf8|
# - Check!
--source include/ddl_i18n.check_events.inc
###########################################################################
#
# * DDL statements inside stored routine.
#
# Here we check that DDL statements use actual database collation even if they
# are called from stored routine.
#
###########################################################################
--echo
--echo -------------------------------------------------------------------
--echo DDL statements within stored routine.
--echo -------------------------------------------------------------------
--echo
#
# Preparation:
#
# - Create database with fixed, pre-defined character set.
--disable_warnings
DROP DATABASE IF EXISTS mysqltest1|
DROP DATABASE IF EXISTS mysqltest2|
--enable_warnings
CREATE DATABASE mysqltest1 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci|
CREATE DATABASE mysqltest2 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci|
use mysqltest1|
# - Create procedures;
--echo
CREATE PROCEDURE p1()
BEGIN
CREATE TABLE t1(col1 VARCHAR(10));
SHOW CREATE TABLE t1;
END|
--echo
CREATE PROCEDURE mysqltest2.p2()
BEGIN
CREATE TABLE t2(col1 VARCHAR(10));
SHOW CREATE TABLE t2;
END|
--echo
#
# First-round checks.
#
CALL p1()|
--echo
SHOW CREATE TABLE t1|
--echo
--echo
CALL mysqltest2.p2()|
--echo
SHOW CREATE TABLE mysqltest2.t2|
#
# Alter database.
#
--echo
ALTER DATABASE mysqltest1 COLLATE cp1251_general_cs|
ALTER DATABASE mysqltest2 COLLATE cp1251_general_cs|
DROP TABLE t1|
DROP TABLE mysqltest2.t2|
--echo
#
# Second-round checks.
#
CALL p1()|
--echo
SHOW CREATE TABLE t1|
--echo
--echo
CALL mysqltest2.p2()|
--echo
SHOW CREATE TABLE mysqltest2.t2|
###########################################################################
#
# That's it.
#
###########################################################################
#
# Cleanup.
#
delimiter ;|
--connection con2
--echo
--echo ---> connection: con2
--disconnect con2
--source include/wait_until_disconnected.inc
--connection con3
--echo
--echo ---> connection: con3
--disconnect con3
--source include/wait_until_disconnected.inc
--connection default
--echo
--echo ---> connection: default
USE test;
DROP DATABASE mysqltest1;
DROP DATABASE mysqltest2;