summaryrefslogtreecommitdiff
path: root/mysql-test/main/ctype_create.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/main/ctype_create.test')
-rw-r--r--mysql-test/main/ctype_create.test143
1 files changed, 143 insertions, 0 deletions
diff --git a/mysql-test/main/ctype_create.test b/mysql-test/main/ctype_create.test
new file mode 100644
index 00000000000..61fc5292094
--- /dev/null
+++ b/mysql-test/main/ctype_create.test
@@ -0,0 +1,143 @@
+#
+# Test for various CREATE statements and character sets
+#
+
+
+# Check that the database charset is taken from server charset by default:
+# - Change local character_set_server variable to latin5.
+# - Create database with and without CHARACTER SET specification.
+# At the same time check fix for the
+# Bug#2151:
+# "USE db" with non-default character set should never affect
+# further CREATE DATABASEs.
+
+
+SET @@character_set_server=latin5;
+CREATE DATABASE mysqltest1 DEFAULT CHARACTER SET cp1251;
+USE mysqltest1;
+CREATE DATABASE mysqltest2;
+
+#
+# This should be cp1251
+#
+SHOW CREATE DATABASE mysqltest1;
+
+#
+# Database "mysqltest2" should take the default latin5 value from
+# the server level.
+# Afterwards, table "d2.t1" should inherit the default latin5 value from
+# the database "mysqltest2", using database option hash.
+#
+SHOW CREATE DATABASE mysqltest2;
+CREATE TABLE mysqltest2.t1 (a char(10));
+SHOW CREATE TABLE mysqltest2.t1;
+DROP TABLE mysqltest2.t1;
+
+#
+# Now we check if the database charset is updated in
+# the database options hash when we ALTER DATABASE.
+#
+ALTER DATABASE mysqltest2 DEFAULT CHARACTER SET latin7;
+CREATE TABLE mysqltest2.t1 (a char(10));
+SHOW CREATE TABLE mysqltest2.t1;
+DROP DATABASE mysqltest2;
+
+#
+# Now we check if the database charset is removed from
+# the database option hash when we DROP DATABASE.
+#
+CREATE DATABASE mysqltest2 CHARACTER SET latin2;
+CREATE TABLE mysqltest2.t1 (a char(10));
+SHOW CREATE TABLE mysqltest2.t1;
+DROP DATABASE mysqltest2;
+
+#
+# Check that table value uses database level by default
+#
+USE mysqltest1;
+CREATE TABLE t1 (a char(10));
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+#
+# Bug#3255
+#
+CREATE TABLE t1 (a char(10)) DEFAULT CHARACTER SET latin1;
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+CREATE TABLE t1 (a char(10))
+DEFAULT CHARACTER SET latin1 COLLATE latin1_german1_ci;
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+#
+# Bug#
+# CREATE TABLE and CREATE DATABASE didn't fail in some cases
+#
+--error 1302
+create table t1 (a char) character set latin1 character set latin2;
+--error 1253
+create table t1 (a char) character set latin1 collate latin2_bin;
+--error 1302
+create database d1 default character set latin1 character set latin2;
+--error 1253
+create database d1 default character set latin1 collate latin2_bin;
+
+#
+#
+DROP DATABASE mysqltest1;
+
+
+#
+# Synatx: 'ALTER DATABASE' without db_name
+#
+CREATE DATABASE mysqltest2 DEFAULT CHARACTER SET latin7;
+use mysqltest2;
+ALTER DATABASE DEFAULT CHARACTER SET latin2;
+show create database mysqltest2;
+drop database mysqltest2;
+--error 1046
+ALTER DATABASE DEFAULT CHARACTER SET latin2;
+
+# End of 4.1 tests
+
+--error 1102
+ALTER DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa DEFAULT CHARACTER SET latin2;
+--error 1102
+ALTER DATABASE `` DEFAULT CHARACTER SET latin2;
+USE test;
+
+--echo #
+--echo # Start of 10.0 tests
+--echo #
+
+--echo #
+--echo # MDEV-7387 Alter table xxx CHARACTER SET utf8, CONVERT TO CHARACTER SET latin1 should fail
+--echo #
+--error ER_CONFLICTING_DECLARATIONS
+CREATE TABLE t1 (a VARCHAR(10)) CHARACTER SET DEFAULT, CHARACTER SET utf8;
+--error ER_CONFLICTING_DECLARATIONS
+CREATE TABLE t1 (a VARCHAR(10)) CHARACTER SET utf8, CHARACTER SET DEFAULT;
+CREATE TABLE t1 (a VARCHAR(10)) CHARACTER SET utf8, CHARACTER SET utf8;
+DROP TABLE t1;
+CREATE TABLE t1 (a VARCHAR(10)) CHARACTER SET DEFAULT, CHARACTER SET DEFAULT;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1, b VARCHAR(10) CHARACTER SET utf8);
+--error ER_CONFLICTING_DECLARATIONS
+ALTER TABLE t1 CONVERT TO CHARACTER SET utf8, CHARACTER SET latin1;
+--error ER_CONFLICTING_DECLARATIONS
+ALTER TABLE t1 CONVERT TO CHARACTER SET utf8, CHARACTER SET DEFAULT;
+--error ER_CONFLICTING_DECLARATIONS
+ALTER TABLE t1 CONVERT TO CHARACTER SET latin1, CHARACTER SET utf8;
+--error ER_CONFLICTING_DECLARATIONS
+ALTER TABLE t1 CONVERT TO CHARACTER SET latin1, CHARACTER SET DEFAULT;
+--error ER_CONFLICTING_DECLARATIONS
+ALTER TABLE t1 CONVERT TO CHARACTER SET DEFAULT, CHARACTER SET utf8;
+--error ER_CONFLICTING_DECLARATIONS
+ALTER TABLE t1 CONVERT TO CHARACTER SET DEFAULT, CHARACTER SET latin1;
+DROP TABLE t1;
+
+--echo #
+--echo # End of 10.0 tests
+--echo #