diff options
Diffstat (limited to 'mysql-test/main/ctype_create.test')
-rw-r--r-- | mysql-test/main/ctype_create.test | 143 |
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 # |