RE: unique key and utf8

"Linus Upson" <[email protected]> Sat, 3 Jul 2004 18:47:51 -0700
Newsgroups gmane.comp.db.mysql.bugs
Message-ID <005901c46168$eaff4ef0$6601a8c0@dropout>
Many of the mysql test cases fail when I configure 4.1.3 with
'--with-charset=utf8'. The symptoms are similar to the index truncation
problem I reported with 4.1.1.

Here is how mysql was configured:

C compiler:    gcc (GCC) 3.2.3 20030502 (Red Hat Linux 3.2.3-34)
C++ compiler:  g++ (GCC) 3.2.3 20030502 (Red Hat Linux 3.2.3-34)
Environment:
System: Linux seek 2.4.21-15.0.2.ELsmp #1 SMP Wed Jun 16 22:52:07 EDT 2004
i686 i686 i386 GNU/Linux
Architecture: i686

./configure --prefix=/home/linus/mysql/utf8 --with-tcp-port=8506
--with-unix-socket-path=/home/linus/mysql/utf8/tmp/mysql.sock
--with-charset=utf8

The full test results from the following command are attached.

$ ./mysql-test-run --force > test-utf8.txt

I also tried to configure mysql using the same configure command but without
the '--with-charset=utf8' option. More of the tests ran, but it eventually
failed with:

...
ctype_mb                       [ pass ]
ctype_recoding                 [ pass ]
ctype_sjis                     [ skipped ]
ERROR: /home/linus/mysql/utf8/mysql-test/var/run/master.pid was not created
in 30 seconds;  Aborting

I've attached the complete test output as test-default-charset.txt.

Thanks,
Linus


-----Original Message-----
From: Sergei Golubchik [mailto:[email protected]] 
Sent: Wednesday, June 30, 2004 2:09 PM
To: Linus Upson
Cc: [email protected]; [email protected]
Subject: Re: unique key and utf8


Hi!

On Jun 30, Linus Upson wrote:
> The following was tested with MySQL 4.1.1 running on RedHat ES 3. This 
> message was sent in UTF-8.
> 
> The unique key index prefix length is misleading when you use the utf8 
> character set. If you specify a prefix of N characters the uniqueness 
> constraint appears to be enforced for the first 3*N bytes of column, 
> not the first N characters.

Oops.
I agree, it's confusing.
We'll fix it.
 
> I discovered this problem because mysql silently shortened the unique 
> index prefix on one of my utf8 varchar columns. When I execute the 
> following statement:
> 
> CREATE TABLE `t` (
>   `c` varchar(150) NOT NULL default '',
>   UNIQUE KEY `c` (`c`(150))
> ) TYPE=MyISAM DEFAULT CHARSET=utf8
> 
> there are no errors or warnings, but the result is:
> 
> mysql> show create table t \G
> *************************** 1. row ***************************
>        Table: t
> Create Table: CREATE TABLE `t` (
>   `c` varchar(150) NOT NULL default '',
>   UNIQUE KEY `c` (`c`(64))
> ) TYPE=MyISAM DEFAULT CHARSET=utf8
> 1 row in set (0.00 sec)
> 
> The 150 character prefix should still fit within the 500 byte index 
> limit of 4.1.1 since 3 * 150 = 450, but for some reason the prefix has 
> been reduced to 64.

I wasn't able to repeat in in MySQL 4.1.3 - index was created as expected.
MySQL *never* silently truncates a UNIQUE index (if it does, it's a bug).
 
Regards,
Sergei

-- 
   __  ___     ___ ____  __
  /  |/  /_ __/ __/ __ \/ /   Sergei Golubchik <[email protected]>
 / /|_/ / // /\ \/ /_/ / /__  MySQL AB, Senior Software Developer /_/
/_/\_, /___/\___\_\___/  Osnabrueck, Germany
       <___/  www.mysql.com

-- 
MySQL Bugs Mailing List
For list archives: http://lists.mysql.com/bugs
To unsubscribe:    http://lists.mysql.com/[email protected]
test-utf8.txt (text/plain, 21.6 KB)
Installing Test Databases
Removing Stale Files
Installing Master Databases
running  ../libexec/mysqld --no-defaults --bootstrap --skip-grant-tables     --basedir=.. --datadir=mysql-test/var/master-data --skip-innodb --skip-ndbcluster --skip-bdb     
Installing Slave Databases
running  ../libexec/mysqld --no-defaults --bootstrap --skip-grant-tables     --basedir=.. --datadir=mysql-test/var/slave-data --skip-innodb --skip-ndbcluster --skip-bdb     
Manager disabled, skipping manager start.
Loading Standard Test Databases
Starting Tests

 TEST                           RESULT
------------------------------------------
alias                          [ fail ]

Errors are (from /home/linus/mysql/utf8/mysql-test/var/log/mysqltest-time) :
/home/linus/mysql/utf8/bin/mysqltest: At line 65: query 'SELECT ELT(FIELD(kundentyp,'PP','PPA','PG','PGA','FK','FKA','FP','FPA','K','KA','V','VA',''), 'Privat (Private Nutzung)','Privat (Private Nutzung) Sitz im Ausland','Privat (geschaeftliche Nutzung)','Privat (geschaeftliche Nutzung) Sitz im Ausland','Firma (Kapitalgesellschaft)','Firma (Kapitalgesellschaft) Sitz im Ausland','Firma (Personengesellschaft)','Firma (Personengesellschaft) Sitz im Ausland','oeff. rechtl. Koerperschaft','oeff. rechtl. Koerperschaft Sitz im Ausland','Eingetragener Verein','Eingetragener Verein Sitz im Ausland','Typ unbekannt') AS Kundentyp ,kategorie FROM t1 WHERE hdl_nr < 2000000 AND kategorie IN ('Prepaid','Mobilfunk') AND st_klasse = 'Workflow' GROUP BY kundentyp ORDER BY kategorie' failed: 1271: Illegal mix of collations for operation 'field'
(the last lines may be the most important ones)

Ending Tests
Shutting-down MySQL daemon

Master shutdown finished
Slave shutdown finished
Resuming Tests

alter_table                    [ pass ]
analyse                        [ fail ]

Errors are (from /home/linus/mysql/utf8/mysql-test/var/log/mysqltest-time) :
/home/linus/mysql/utf8/bin/mysqltest: At line 41: Result length mismatch
(the last lines may be the most important ones)
Below are the diffs between actual and expected results:
-------------------------------------------------------
*** r/analyse.result	2004-07-04 03:33:44.000000000 +0300
--- r/analyse.reject	2004-07-04 04:22:57.000000000 +0300
***************
*** 19,31 ****
  test.t1.bool	N	Y	1	1	0	0	1.0000	NULL	ENUM('N','Y') NOT NULL
  test.t1.d	2002-03-03	2002-03-05	10	10	0	0	10.0000	NULL	ENUM('2002-03-03','2002-03-04','2002-03-05') NOT NULL
  create table t2 select * from t1 procedure analyse();
  select * from t2;
  Field_name	Min_value	Max_value	Min_length	Max_length	Empties_or_zeros	Nulls	Avg_value_or_avg_length	Std	Optimal_fieldtype
! test.t1.i	1	7	1	1	0	0	4.0000	2.2361	ENUM('1','3','5','7') NOT NULL
! test.t1.j	2	8	1	1	0	0	5.0000	2.2361	ENUM('2','4','6','8') NOT NULL
  test.t1.empty_string			0	0	4	0	0.0000	NULL	CHAR(0) NOT NULL
  test.t1.bool	N	Y	1	1	0	0	1.0000	NULL	ENUM('N','Y') NOT NULL
! test.t1.d	2002-03-03	2002-03-05	10	10	0	0	10.0000	NULL	ENUM('2002-03-03','2002-03-04','2002-03-05') NOT NULL
  drop table t1,t2;
  EXPLAIN SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE();
  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
--- 19,35 ----
  test.t1.bool	N	Y	1	1	0	0	1.0000	NULL	ENUM('N','Y') NOT NULL
  test.t1.d	2002-03-03	2002-03-05	10	10	0	0	10.0000	NULL	ENUM('2002-03-03','2002-03-04','2002-03-05') NOT NULL
  create table t2 select * from t1 procedure analyse();
+ Warnings:
+ Warning	1265	Data truncated for column 'Optimal_fieldtype' at row 4
+ Warning	1265	Data truncated for column 'Optimal_fieldtype' at row 4
+ Warning	1265	Data truncated for column 'Optimal_fieldtype' at row 4
  select * from t2;
  Field_name	Min_value	Max_value	Min_length	Max_length	Empties_or_zeros	Nulls	Avg_value_or_avg_length	Std	Optimal_fieldtype
! test.t1.i	1	7	1	1	0	0	4.0000	2.2361	ENUM('1','3','5','7')
! test.t1.j	2	8	1	1	0	0	5.0000	2.2361	ENUM('2','4','6','8')
  test.t1.empty_string			0	0	4	0	0.0000	NULL	CHAR(0) NOT NULL
  test.t1.bool	N	Y	1	1	0	0	1.0000	NULL	ENUM('N','Y') NOT NULL
! test.t1.d	2002-03-03	2002-03-05	10	10	0	0	10.0000	NULL	ENUM('2002-03-03','200
  drop table t1,t2;
  EXPLAIN SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE();
  id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
***************
*** 36,51 ****
  show create table t2;
  Table	Create Table
  t2	CREATE TABLE `t2` (
!   `Field_name` char(255) NOT NULL default '',
!   `Min_value` char(255) default NULL,
!   `Max_value` char(255) default NULL,
    `Min_length` bigint(11) NOT NULL default '0',
    `Max_length` bigint(11) NOT NULL default '0',
    `Empties_or_zeros` bigint(11) NOT NULL default '0',
    `Nulls` bigint(11) NOT NULL default '0',
!   `Avg_value_or_avg_length` char(255) NOT NULL default '',
!   `Std` char(255) default NULL,
!   `Optimal_fieldtype` char(64) NOT NULL default ''
  ) ENGINE=MyISAM DEFAULT CHARSET=latin1
  select * from t1 where 0=1 procedure analyse();
  Field_name	Min_value	Max_value	Min_length	Max_length	Empties_or_zeros	Nulls	Avg_value_or_avg_length	Std	Optimal_fieldtype
--- 40,55 ----
  show create table t2;
  Table	Create Table
  t2	CREATE TABLE `t2` (
!   `Field_name` char(85) character set utf8 NOT NULL default '',
!   `Min_value` char(85) character set utf8 default NULL,
!   `Max_value` char(85) character set utf8 default NULL,
    `Min_length` bigint(11) NOT NULL default '0',
    `Max_length` bigint(11) NOT NULL default '0',
    `Empties_or_zeros` bigint(11) NOT NULL default '0',
    `Nulls` bigint(11) NOT NULL default '0',
!   `Avg_value_or_avg_length` char(85) character set utf8 NOT NULL default '',
!   `Std` char(85) character set utf8 default NULL,
!   `Optimal_fieldtype` char(22) character set utf8 NOT NULL default ''
  ) ENGINE=MyISAM DEFAULT CHARSET=latin1
  select * from t1 where 0=1 procedure analyse();
  Field_name	Min_value	Max_value	Min_length	Max_length	Empties_or_zeros	Nulls	Avg_value_or_avg_length	Std	Optimal_fieldtype
***************
*** 55,70 ****
  show create table t2;
  Table	Create Table
  t2	CREATE TABLE `t2` (
!   `Field_name` char(255) NOT NULL default '',
!   `Min_value` char(255) default NULL,
!   `Max_value` char(255) default NULL,
    `Min_length` bigint(11) NOT NULL default '0',
    `Max_length` bigint(11) NOT NULL default '0',
    `Empties_or_zeros` bigint(11) NOT NULL default '0',
    `Nulls` bigint(11) NOT NULL default '0',
!   `Avg_value_or_avg_length` char(255) NOT NULL default '',
!   `Std` char(255) default NULL,
!   `Optimal_fieldtype` char(64) NOT NULL default ''
  ) ENGINE=MyISAM DEFAULT CHARSET=latin1
  select * from t2;
  Field_name	Min_value	Max_value	Min_length	Max_length	Empties_or_zeros	Nulls	Avg_value_or_avg_length	Std	Optimal_fieldtype
--- 59,74 ----
  show create table t2;
  Table	Create Table
  t2	CREATE TABLE `t2` (
!   `Field_name` char(85) character set utf8 NOT NULL default '',
!   `Min_value` char(85) character set utf8 default NULL,
!   `Max_value` char(85) character set utf8 default NULL,
    `Min_length` bigint(11) NOT NULL default '0',
    `Max_length` bigint(11) NOT NULL default '0',
    `Empties_or_zeros` bigint(11) NOT NULL default '0',
    `Nulls` bigint(11) NOT NULL default '0',
!   `Avg_value_or_avg_length` char(85) character set utf8 NOT NULL default '',
!   `Std` char(85) character set utf8 default NULL,
!   `Optimal_fieldtype` char(22) character set utf8 NOT NULL default ''
  ) ENGINE=MyISAM DEFAULT CHARSET=latin1
  select * from t2;
  Field_name	Min_value	Max_value	Min_length	Max_length	Empties_or_zeros	Nulls	Avg_value_or_avg_length	Std	Optimal_fieldtype
***************
*** 78,93 ****
  show create table t2;
  Table	Create Table
  t2	CREATE TABLE `t2` (
!   `Field_name` char(255) NOT NULL default '',
!   `Min_value` char(255) default NULL,
!   `Max_value` char(255) default NULL,
    `Min_length` bigint(11) NOT NULL default '0',
    `Max_length` bigint(11) NOT NULL default '0',
    `Empties_or_zeros` bigint(11) NOT NULL default '0',
    `Nulls` bigint(11) NOT NULL default '0',
!   `Avg_value_or_avg_length` char(255) NOT NULL default '',
!   `Std` char(255) default NULL,
!   `Optimal_fieldtype` char(64) NOT NULL default ''
  ) ENGINE=MyISAM DEFAULT CHARSET=latin1
  select * from t2;
  Field_name	Min_value	Max_value	Min_length	Max_length	Empties_or_zeros	Nulls	Avg_value_or_avg_length	Std	Optimal_fieldtype
--- 82,97 ----
  show create table t2;
  Table	Create Table
  t2	CREATE TABLE `t2` (
!   `Field_name` char(85) character set utf8 NOT NULL default '',
!   `Min_value` char(85) character set utf8 default NULL,
!   `Max_value` char(85) character set utf8 default NULL,
    `Min_length` bigint(11) NOT NULL default '0',
    `Max_length` bigint(11) NOT NULL default '0',
    `Empties_or_zeros` bigint(11) NOT NULL default '0',
    `Nulls` bigint(11) NOT NULL default '0',
!   `Avg_value_or_avg_length` char(85) character set utf8 NOT NULL default '',
!   `Std` char(85) character set utf8 default NULL,
!   `Optimal_fieldtype` char(22) character set utf8 NOT NULL default ''
  ) ENGINE=MyISAM DEFAULT CHARSET=latin1
  select * from t2;
  Field_name	Min_value	Max_value	Min_length	Max_length	Empties_or_zeros	Nulls	Avg_value_or_avg_length	Std	Optimal_fieldtype
-------------------------------------------------------
Please follow the instructions outlined at
http://www.mysql.com/doc/en/Reporting_mysqltest_bugs.html
to find the reason to this problem and how to report this.

Ending Tests
Shutting-down MySQL daemon

Master shutdown finished
Slave shutdown finished
Resuming Tests

ansi                           [ pass ]
archive                        [ skipped ]
auto_increment                 [ pass ]
backup                         [ pass ]
bdb-alter-table-1              [ skipped ]
bdb-alter-table-2              [ skipped ]
bdb-crash                      [ skipped ]
bdb-deadlock                   [ skipped ]
bdb                            [ skipped ]
bdb_cache                      [ skipped ]
bench_count_distinct           [ pass ]
bigint                         [ pass ]
binary                         [ fail ]

Errors are (from /home/linus/mysql/utf8/mysql-test/var/log/mysqltest-time) :
/home/linus/mysql/utf8/bin/mysqltest: At line 11: query 'insert into t1 values ("ä")' failed: 1062: Duplicate entry '' for key 1
(the last lines may be the most important ones)

Ending Tests
Shutting-down MySQL daemon

Master shutdown finished
Slave shutdown finished
Resuming Tests

bool                           [ pass ]
bulk_replace                   [ pass ]
case                           [ fail ]

Errors are (from /home/linus/mysql/utf8/mysql-test/var/log/mysqltest-time) :
/home/linus/mysql/utf8/bin/mysqltest: At line 44: query 'select max(case col when 1 then val else null end) as color from t1 group by row' failed: 1267: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'case'
(the last lines may be the most important ones)

Ending Tests
Shutting-down MySQL daemon

Master shutdown finished
Slave shutdown finished
Resuming Tests

cast                           [ fail ]

Errors are (from /home/linus/mysql/utf8/mysql-test/var/log/mysqltest-time) :
/home/linus/mysql/utf8/bin/mysqltest: At line 31: query 'create table t1 select cast(_koi8r'ÔÅÓÔ' as char character set cp1251) as t' failed: 1050: Table 't1' already exists
(the last lines may be the most important ones)

Ending Tests
Shutting-down MySQL daemon

Master shutdown finished
Slave shutdown finished
Resuming Tests

check                          [ pass ]
comments                       [ pass ]
compare                        [ fail ]

Errors are (from /home/linus/mysql/utf8/mysql-test/var/log/mysqltest-time) :
/home/linus/mysql/utf8/bin/mysqltest: At line 31: query 'SELECT hex(a),STRCMP(a,'a'), STRCMP(a,'a ') FROM t1' failed: 1267: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'strcmp'
(the last lines may be the most important ones)

Ending Tests
Shutting-down MySQL daemon

Master shutdown finished
Slave shutdown finished
Resuming Tests

connect                        [ fail ]

Errors are (from /home/linus/mysql/utf8/mysql-test/var/log/mysqltest-time) :
/home/linus/mysql/utf8/bin/mysqltest: At line 73: Result length mismatch
(the last lines may be the most important ones)
Below are the diffs between actual and expected results:
-------------------------------------------------------
*** r/connect.result	2004-07-04 03:33:44.000000000 +0300
--- r/connect.reject	2004-07-04 04:24:01.000000000 +0300
***************
*** 17,22 ****
--- 17,24 ----
  user
  show tables;
  Tables_in_test
+ t1
+ t2
  grant ALL on *.* to test@localhost identified by "gambling";
  grant ALL on *.* to [email protected] identified by "gambling";
  show tables;
***************
*** 38,43 ****
--- 40,47 ----
  user
  show tables;
  Tables_in_test
+ t1
+ t2
  update mysql.user set password=old_password("gambling2") where user="test";
  flush privileges;
  set password=old_password('gambling3');
***************
*** 60,64 ****
--- 64,70 ----
  user
  show tables;
  Tables_in_test
+ t1
+ t2
  delete from mysql.user where user="test";
  flush privileges;
-------------------------------------------------------
Please follow the instructions outlined at
http://www.mysql.com/doc/en/Reporting_mysqltest_bugs.html
to find the reason to this problem and how to report this.

Ending Tests
Shutting-down MySQL daemon

Master shutdown finished
Slave shutdown finished
Resuming Tests

constraints                    [ pass ]
count_distinct                 [ fail ]

Errors are (from /home/linus/mysql/utf8/mysql-test/var/log/mysqltest-time) :
/home/linus/mysql/utf8/bin/mysqltest: At line 37: query 'select t2.isbn,city,t1.libname,count(distinct t1.libname) as a from t3 left join t1 on t3.libname=t1.libname left join t2 on t3.isbn=t2.isbn group by city having count(distinct concat(t1.libname,'a')) > 1' failed: 1267: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'concat'
(the last lines may be the most important ones)

Ending Tests
Shutting-down MySQL daemon

Master shutdown finished
Slave shutdown finished
Resuming Tests

count_distinct2                [ pass ]
count_distinct3                [ pass ]
create                         [ fail ]

Errors are (from /home/linus/mysql/utf8/mysql-test/var/log/mysqltest-time) :
/home/linus/mysql/utf8/bin/mysqltest: At line 97: query 'explain select * from t2 where b="world"' failed: 1267: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
(the last lines may be the most important ones)

Ending Tests
Shutting-down MySQL daemon

Master shutdown finished
Slave shutdown finished
Resuming Tests

ctype_big5                     [ skipped ]
ctype_collate                  [ fail ]

Errors are (from /home/linus/mysql/utf8/mysql-test/var/log/mysqltest-time) :
/home/linus/mysql/utf8/bin/mysqltest: At line 197: Result length mismatch
(the last lines may be the most important ones)
Below are the diffs between actual and expected results:
-------------------------------------------------------
*** r/ctype_collate.result	2004-07-04 03:33:44.000000000 +0300
--- r/ctype_collate.reject	2004-07-04 04:26:35.000000000 +0300
***************
*** 58,72 ****
  ue
  Y
  y
! ü
! Ü
  Z
  z
! å
! Å
! Ä
! ä
! ß
  SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE latin1_swedish_ci;
  latin1_f
  A
--- 58,72 ----
  ue
  Y
  y
! ü
! Ü
  Z
  z
! å
! Å
! Ä
! ä
! ß
  SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE latin1_swedish_ci;
  latin1_f
  A
***************
*** 87,126 ****
  ue
  Y
  y
! ü
! Ü
  Z
  z
! å
! Å
! Ä
! ä
! ß
  SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE latin1_german2_ci;
  latin1_f
  A
  a
! Å
! å
  AD
  ad
! Ä
  ae
  AE
! ä
  af
  AF
  b
  B
! ß
  ss
  SS
  U
  u
  ue
  UE
! ü
! Ü
  Y
  y
  Z
--- 87,126 ----
  ue
  Y
  y
! ü
! Ü
  Z
  z
! å
! Å
! Ä
! ä
! ß
  SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE latin1_german2_ci;
  latin1_f
  A
  a
! Å
! å
  AD
  ad
! Ä
  ae
  AE
! ä
  af
  AF
  b
  B
! ß
  ss
  SS
  U
  u
  ue
  UE
! ü
! Ü
  Y
  y
  Z
***************
*** 135,155 ****
  ae
  af
  AF
! Ä
! ä
! Å
! å
  b
  B
  ss
  SS
! ß
  U
  u
  UE
  ue
! ü
! Ü
  Y
  y
  Z
--- 135,155 ----
  ae
  af
  AF
! Ä
! ä
! Å
! å
  b
  B
  ss
  SS
! ß
  U
  u
  UE
  ue
! ü
! Ü
  Y
  y
  Z
***************
*** 176,188 ****
  ue
  y
  z
! Ä
! Å
! Ü
! ß
! ä
! å
! ü
  SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE koi8r_general_ci;
  ERROR 42000: COLLATION 'koi8r_general_ci' is not valid for CHARACTER SET 'latin1'
  SELECT latin1_f COLLATE latin1_swedish_ci AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
--- 176,188 ----
  ue
  y
  z
! Ä
! Å
! Ü
! ß
! ä
! å
! ü
  SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE koi8r_general_ci;
  ERROR 42000: COLLATION 'koi8r_general_ci' is not valid for CHARACTER SET 'latin1'
  SELECT latin1_f COLLATE latin1_swedish_ci AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
***************
*** 205,244 ****
  ue
  Y
  y
! ü
! Ü
  Z
  z
! å
! Å
! Ä
! ä
! ß
  SELECT latin1_f COLLATE latin1_german2_ci AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
  latin1_f_as
  A
  a
! Å
! å
  AD
  ad
! Ä
  ae
  AE
! ä
  af
  AF
  b
  B
! ß
  ss
  SS
  U
  u
  ue
  UE
! ü
! Ü
  Y
  y
  Z
--- 205,244 ----
  ue
  Y
  y
! ü
! Ü
  Z
  z
! å
! Å
! Ä
! ä
! ß
  SELECT latin1_f COLLATE latin1_german2_ci AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
  latin1_f_as
  A
  a
! Å
! å
  AD
  ad
! Ä
  ae
  AE
! ä
  af
  AF
  b
  B
! ß
  ss
  SS
  U
  u
  ue
  UE
! ü
! Ü
  Y
  y
  Z
***************
*** 253,273 ****
  ae
  af
  AF
! Ä
! ä
! Å
! å
  b
  B
  ss
  SS
! ß
  U
  u
  UE
  ue
! ü
! Ü
  Y
  y
  Z
--- 253,273 ----
  ae
  af
  AF
! Ä
! ä
! Å
! å
  b
  B
  ss
  SS
! ß
  U
  u
  UE
  ue
! ü
! Ü
  Y
  y
  Z
***************
*** 294,306 ****
  ue
  y
  z
! Ä
! Å
! Ü
! ß
! ä
! å
! ü
  SELECT latin1_f COLLATE koi8r_general_ci  AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
  ERROR 42000: COLLATION 'koi8r_general_ci' is not valid for CHARACTER SET 'latin1'
  SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f;
--- 294,306 ----
  ue
  y
  z
! Ä
! Å
! Ü
! ß
! ä
! å
! ü
  SELECT latin1_f COLLATE koi8r_general_ci  AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
  ERROR 42000: COLLATION 'koi8r_general_ci' is not valid for CHARACTER SET 'latin1'
  SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f;
***************
*** 313,323 ****
  SS	2
  U	2
  UE	2
! Ü	4
  Z	2
! Å	2
! Ä	2
! ß	1
  SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE latin1_swedish_ci;
  latin1_f	count(*)
  A	2
--- 313,323 ----
  SS	2
  U	2
  UE	2
! Ü	4
  Z	2
! Å	2
! Ä	2
! ß	1
  SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE latin1_swedish_ci;
  latin1_f	count(*)
  A	2
***************
*** 328,338 ****
  SS	2
  U	2
  UE	2
! Ü	4
  Z	2
! Å	2
! Ä	2
! ß	1
  SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE latin1_german2_ci;
  latin1_f	count(*)
  A	4
--- 328,338 ----
  SS	2
  U	2
  UE	2
! Ü	4
  Z	2
! Å	2
! Ä	2
! ß	1
  SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE latin1_german2_ci;
  latin1_f	count(*)
  A	4
***************
*** 351,364 ****
  AD	2
  AE	2
  AF	2
! Ä	2
! Å	2
  B	2
  SS	2
! ß	1
  U	2
  UE	2
! Ü	2
  Y	2
  Z	2
  SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE latin1_bin;
--- 351,364 ----
  AD	2
  AE	2
  AF	2
! Ä	2
! Å	2
  B	2
  SS	2
! ß	1
  U	2
  UE	2
! Ü	2
  Y	2
  Z	2
  SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE latin1_bin;
***************
*** 383,395 ****
  ue	1
  y	1
  z	1
! Ä	1
! Å	1
! Ü	1
! ß	1
! ä	1
! å	1
! ü	1
  SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE koi8r_general_ci;
  ERROR 42000: COLLATION 'koi8r_general_ci' is not valid for CHARACTER SET 'latin1'
  SELECT DISTINCT latin1_f                           FROM t1;
--- 383,395 ----
  ue	1
  y	1
  z	1
! Ä	1
! Å	1
! Ü	1
! ß	1
! ä	1
! å	1
! ü	1
  SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE koi8r_general_ci;
  ERROR 42000: COLLATION 'koi8r_general_ci' is not valid for CHARACTER SET 'latin1'
  SELECT DISTINCT latin1_f                           FROM t1;
***************
*** 398,411 ****
  AD
  AE
  AF
! Ä
! Å
  B
  U
  UE
! Ü
  SS
! ß
  Z
  SELECT DISTINCT latin1_f COLLATE latin1_swedish_ci FROM t1;
  latin1_f COLLATE latin1_swedish_ci
--- 398,411 ----
  AD
  AE
  AF
! Ä
! Å
  B
  U
  UE
! Ü
  SS
! ß
  Z
  SELECT DISTINCT latin1_f COLLATE latin1_swedish_ci FROM t1;
  latin1_f COLLATE latin1_swedish_ci
***************
*** 413,426 ****
  AD
  AE
  AF
! Ä
! Å
  B
  U
  UE
! Ü
  SS
! ß
  Z
  SELECT DISTINCT latin1_f COLLATE latin1_german2_ci FROM t1;
  latin1_f COLLATE latin1_german2_ci
--- 413,426 ----
  AD
  AE
  AF
! Ä
! Å
  B
  U
  UE
! Ü
  SS
! ß
  Z
  SELECT DISTINCT latin1_f COLLATE latin1_german2_ci FROM t1;
  latin1_f COLLATE latin1_german2_ci
***************
*** 440,453 ****
  AD
  AE
  AF
! Ä
! Å
  B
  U
  UE
! Ü
  SS
! ß
  Y
  Z
  SELECT DISTINCT latin1_f COLLATE latin1_bin        FROM t1;
--- 440,453 ----
  AD
  AE
  AF
! Ä
! Å
  B
  U
  UE
! Ü
  SS
! ß
  Y
  Z
  SELECT DISTINCT latin1_f COLLATE latin1_bin        FROM t1;
***************
*** 460,480 ****
  ae
  AF
  af
! Ä
! ä
! Å
! å
  B
  b
  U
  u
  UE
  ue
! Ü
! ü
  SS
  ss
! ß
  Y
  y
  Z
--- 460,480 ----
  ae
  AF
  af
! Ä
! ä
! Å
! å
  B
  b
  U
  u
  UE
  ue
! Ü
! ü
  SS
  ss
! ß
  Y
  y
  Z
-------------------------------------------------------
Please follow the instructions outlined at
http://www.mysql.com/doc/en/Reporting_mysqltest_bugs.html
to find the reason to this problem and how to report this.

Ending Tests
Shutting-down MySQL daemon

Master shutdown finished
Slave shutdown finished
Resuming Tests

ctype_cp1251                   [ pass ]
ctype_create                   [ pass ]
ctype_latin1                   [ pass ]
ctype_latin1_de                [ pass ]
ctype_many                     [ skipped ]
ctype_mb                       [ pass ]
ctype_recoding                 [ pass ]
ctype_sjis                     [ skipped ]
ERROR: /home/linus/mysql/utf8/mysql-test/var/run/master.pid was not created in 30 seconds;  Aborting
test-default-charset.txt (text/plain, 2.3 KB)
Installing Test Databases
Removing Stale Files
Installing Master Databases
running  ../libexec/mysqld --no-defaults --bootstrap --skip-grant-tables     --basedir=.. --datadir=mysql-test/var/master-data --skip-innodb --skip-ndbcluster --skip-bdb     
Installing Slave Databases
running  ../libexec/mysqld --no-defaults --bootstrap --skip-grant-tables     --basedir=.. --datadir=mysql-test/var/slave-data --skip-innodb --skip-ndbcluster --skip-bdb     
Manager disabled, skipping manager start.
Loading Standard Test Databases
Starting Tests

 TEST                           RESULT
------------------------------------------
alias                          [ pass ]
alter_table                    [ pass ]
analyse                        [ pass ]
ansi                           [ pass ]
archive                        [ skipped ]
auto_increment                 [ pass ]
backup                         [ pass ]
bdb-alter-table-1              [ skipped ]
bdb-alter-table-2              [ skipped ]
bdb-crash                      [ skipped ]
bdb-deadlock                   [ skipped ]
bdb                            [ skipped ]
bdb_cache                      [ skipped ]
bench_count_distinct           [ pass ]
bigint                         [ pass ]
binary                         [ pass ]
bool                           [ pass ]
bulk_replace                   [ pass ]
case                           [ pass ]
cast                           [ pass ]
check                          [ pass ]
comments                       [ pass ]
compare                        [ pass ]
connect                        [ pass ]
constraints                    [ pass ]
count_distinct                 [ pass ]
count_distinct2                [ pass ]
count_distinct3                [ pass ]
create                         [ pass ]
ctype_big5                     [ skipped ]
ctype_collate                  [ pass ]
ctype_cp1251                   [ pass ]
ctype_create                   [ pass ]
ctype_latin1                   [ pass ]
ctype_latin1_de                [ pass ]
ctype_many                     [ skipped ]
ctype_mb                       [ pass ]
ctype_recoding                 [ pass ]
ctype_sjis                     [ skipped ]
ERROR: /home/linus/mysql/base/mysql-test/var/run/master.pid was not created in 30 seconds;  Aborting