diff --git a/libmysql/Makefile.shared b/libmysql/Makefile.shared
index 9440d920719..60d6b320bb6 100644
--- a/libmysql/Makefile.shared
+++ b/libmysql/Makefile.shared
@@ -41,7 +41,7 @@ mystringsobjects = strmov.lo strxmov.lo strxnmov.lo strnmov.lo \
ctype.lo ctype-simple.lo ctype-bin.lo ctype-mb.lo \
ctype-big5.lo ctype-czech.lo ctype-euc_kr.lo \
ctype-win1250ch.lo ctype-utf8.lo ctype-extra.lo \
- ctype-gb2312.lo ctype-gbk.lo ctype-latin1_de.lo \
+ ctype-gb2312.lo ctype-gbk.lo \
ctype-sjis.lo ctype-tis620.lo ctype-ujis.lo xml.lo
mystringsextra= strto.c
diff --git a/mysql-test/r/ctype_collate.result b/mysql-test/r/ctype_collate.result
index 07da8c8c75f..a0150dc485a 100644
--- a/mysql-test/r/ctype_collate.result
+++ b/mysql-test/r/ctype_collate.result
@@ -92,7 +92,7 @@ z
Ä
ä
ß
-SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE latin1_de;
+SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE latin1_german2_ci;
latin1_f
A
a
@@ -121,7 +121,7 @@ Y
y
Z
z
-SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE latin1_ci_as;
+SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE latin1_general_ci;
latin1_f
A
a
@@ -181,7 +181,7 @@ z
ü
SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE koi8r;
COLLATION 'koi8r' is not valid for CHARACTER SET 'latin1'
-SELECT latin1_f COLLATE latin1 AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
+SELECT latin1_f COLLATE latin1 AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
latin1_f_as
A
a
@@ -210,7 +210,7 @@ z
Ä
ä
ß
-SELECT latin1_f COLLATE latin1_de AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
+SELECT latin1_f COLLATE latin1_german2_ci AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
latin1_f_as
A
a
@@ -239,7 +239,7 @@ Y
y
Z
z
-SELECT latin1_f COLLATE latin1_ci_as AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
+SELECT latin1_f COLLATE latin1_general_ci AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
latin1_f_as
A
a
@@ -268,7 +268,7 @@ Y
y
Z
z
-SELECT latin1_f COLLATE latin1_bin AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
+SELECT latin1_f COLLATE latin1_bin AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
latin1_f_as
A
AD
@@ -297,7 +297,7 @@ z
ä
å
ü
-SELECT latin1_f COLLATE koi8r AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
+SELECT latin1_f COLLATE koi8r AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
COLLATION 'koi8r' is not valid for CHARACTER SET 'latin1'
SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f;
latin1_f count(*)
@@ -329,7 +329,7 @@ Z 2
Å 2
Ä 2
ß 1
-SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE latin1_de;
+SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE latin1_german2_ci;
latin1_f count(*)
A 4
AD 2
@@ -344,7 +344,7 @@ UE 2
Ü 2
Y 2
Z 2
-SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE latin1_ci_as;
+SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE latin1_general_ci;
latin1_f count(*)
A 2
AD 2
@@ -391,7 +391,7 @@ z 1
ü 1
SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE koi8r;
COLLATION 'koi8r' is not valid for CHARACTER SET 'latin1'
-SELECT DISTINCT latin1_f FROM t1;
+SELECT DISTINCT latin1_f FROM t1;
latin1_f
A
AD
@@ -406,7 +406,7 @@ UE
SS
ß
Z
-SELECT DISTINCT latin1_f COLLATE latin1 FROM t1;
+SELECT DISTINCT latin1_f COLLATE latin1 FROM t1;
latin1_f COLLATE latin1
A
AD
@@ -421,8 +421,8 @@ UE
SS
ß
Z
-SELECT DISTINCT latin1_f COLLATE latin1_de FROM t1;
-latin1_f COLLATE latin1_de
+SELECT DISTINCT latin1_f COLLATE latin1_german2_ci FROM t1;
+latin1_f COLLATE latin1_german2_ci
A
AD
AE
@@ -436,8 +436,8 @@ SS
ß
Y
Z
-SELECT DISTINCT latin1_f COLLATE latin1_ci_as FROM t1;
-latin1_f COLLATE latin1_ci_as
+SELECT DISTINCT latin1_f COLLATE latin1_general_ci FROM t1;
+latin1_f COLLATE latin1_general_ci
A
AD
AE
@@ -452,7 +452,7 @@ SS
ß
Y
Z
-SELECT DISTINCT latin1_f COLLATE latin1_bin FROM t1;
+SELECT DISTINCT latin1_f COLLATE latin1_bin FROM t1;
latin1_f COLLATE latin1_bin
A
a
@@ -481,7 +481,7 @@ Y
y
Z
z
-SELECT DISTINCT latin1_f COLLATE koi8r FROM t1;
+SELECT DISTINCT latin1_f COLLATE koi8r FROM t1;
COLLATION 'koi8r' is not valid for CHARACTER SET 'latin1'
SHOW CREATE TABLE t1;
Table Create Table
diff --git a/mysql-test/t/ctype_collate.test b/mysql-test/t/ctype_collate.test
index c2ebf39170e..e2631a06156 100644
--- a/mysql-test/t/ctype_collate.test
+++ b/mysql-test/t/ctype_collate.test
@@ -58,8 +58,8 @@ INSERT INTO t1 (latin1_f) VALUES (_latin1'z');
SELECT latin1_f FROM t1 ORDER BY latin1_f;
SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE latin1;
-SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE latin1_de;
-SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE latin1_ci_as;
+SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE latin1_german2_ci;
+SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE latin1_general_ci;
SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE latin1_bin;
--error 1251
SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE koi8r;
@@ -67,20 +67,20 @@ SELECT latin1_f FROM t1 ORDER BY latin1_f COLLATE koi8r;
--SELECT latin1_f COLLATE koi8r FROM t1 ;
-- AS + ORDER BY
-SELECT latin1_f COLLATE latin1 AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
-SELECT latin1_f COLLATE latin1_de AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
-SELECT latin1_f COLLATE latin1_ci_as AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
-SELECT latin1_f COLLATE latin1_bin AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
+SELECT latin1_f COLLATE latin1 AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
+SELECT latin1_f COLLATE latin1_german2_ci AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
+SELECT latin1_f COLLATE latin1_general_ci AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
+SELECT latin1_f COLLATE latin1_bin AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
--error 1251
-SELECT latin1_f COLLATE koi8r AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
+SELECT latin1_f COLLATE koi8r AS latin1_f_as FROM t1 ORDER BY latin1_f_as;
-- GROUP BY
SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f;
SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE latin1;
-SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE latin1_de;
-SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE latin1_ci_as;
+SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE latin1_german2_ci;
+SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE latin1_general_ci;
SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE latin1_bin;
--error 1251
SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE koi8r;
@@ -88,29 +88,29 @@ SELECT latin1_f,count(*) FROM t1 GROUP BY latin1_f COLLATE koi8r;
-- DISTINCT
-SELECT DISTINCT latin1_f FROM t1;
-SELECT DISTINCT latin1_f COLLATE latin1 FROM t1;
-SELECT DISTINCT latin1_f COLLATE latin1_de FROM t1;
-SELECT DISTINCT latin1_f COLLATE latin1_ci_as FROM t1;
-SELECT DISTINCT latin1_f COLLATE latin1_bin FROM t1;
+SELECT DISTINCT latin1_f FROM t1;
+SELECT DISTINCT latin1_f COLLATE latin1 FROM t1;
+SELECT DISTINCT latin1_f COLLATE latin1_german2_ci FROM t1;
+SELECT DISTINCT latin1_f COLLATE latin1_general_ci FROM t1;
+SELECT DISTINCT latin1_f COLLATE latin1_bin FROM t1;
--error 1251
-SELECT DISTINCT latin1_f COLLATE koi8r FROM t1;
+SELECT DISTINCT latin1_f COLLATE koi8r FROM t1;
-- Aggregates
---SELECT MAX(k COLLATE latin1_de)
+--SELECT MAX(k COLLATE latin1_german2_ci)
--FROM t1
-- WHERE
--SELECT *
--FROM t1
---WHERE (_latin1'Mu"ller' COLLATE latin1_de) = k
+--WHERE (_latin1'Mu"ller' COLLATE latin1_german2_ci) = k
--HAVING
--SELECT *
--FROM t1
---HAVING (_latin1'Mu"ller' COLLATE latin1_de) = k
+--HAVING (_latin1'Mu"ller' COLLATE latin1_german2_ci) = k
#
diff --git a/mysql-test/t/ctype_latin1_de-master.opt b/mysql-test/t/ctype_latin1_de-master.opt
index 98accd58c46..62f864d501d 100644
--- a/mysql-test/t/ctype_latin1_de-master.opt
+++ b/mysql-test/t/ctype_latin1_de-master.opt
@@ -1 +1 @@
---default-character-set=latin1_de
+--default-character-set=latin1_german2_ci
diff --git a/mysys/charset.c b/mysys/charset.c
index 30bd186c531..e1545dc4f8f 100644
--- a/mysys/charset.c
+++ b/mysys/charset.c
@@ -553,7 +553,10 @@ uint get_charset_number(const char *charset_name)
for (cs= all_charsets; cs < all_charsets+255; ++cs)
{
- if ( cs[0] && cs[0]->name && !strcasecmp(cs[0]->name, charset_name))
+ if ( cs[0] && cs[0]->name &&
+ (!strcasecmp(cs[0]->name, charset_name) ||
+ (!strcasecmp(cs[0]->csname, charset_name) &&
+ (cs[0]->state & MY_CS_PRIMARY))))
return cs[0]->number;
}
return 0; /* this mimics find_type() */
diff --git a/sql/share/charsets/Index.xml b/sql/share/charsets/Index.xml
index ffc6d30100c..974c2968e55 100644
--- a/sql/share/charsets/Index.xml
+++ b/sql/share/charsets/Index.xml
@@ -32,8 +32,8 @@ To make maintaining easier please:
iso_8859-2
iso_8859-2:1987
l2
-
-
+
+
Hungarian
Polish
Romanian
@@ -42,16 +42,16 @@ To make maintaining easier please:
Slovenian
Sorbian
-
-
+
+
Western
DEC West European
-
-
+
+
Dutch
English
French
@@ -93,12 +93,12 @@ To make maintaining easier please:
iso_8859-1:1987
l1
latin1
-
+
-
-
-
-
+
+
+
+
Dutch
English
French
@@ -108,7 +108,7 @@ To make maintaining easier please:
Pogtuguese
Spanish
-
+
Dutch
English
French
@@ -199,7 +199,7 @@ To make maintaining easier please:
-
+
Belarusian
Bulgarian
Macedonian
@@ -208,7 +208,7 @@ To make maintaining easier please:
Mongolian
Ukrainian
-
+
Belarusian
Bulgarian
Macedonian
@@ -256,15 +256,15 @@ To make maintaining easier please:
BalticRim
iso-8859-13
l7
-
+
Estonian
primary
-
+
Latvian
Lithuanian
-
+
Latvian
Lithuanian
@@ -341,11 +341,11 @@ To make maintaining easier please:
Latvian
Lithuanian
-
+
Latvian
Lithuanian
-
+
Latvian
Lithuanian
@@ -417,7 +417,8 @@ To make maintaining easier please:
Sorbian
-
+
+
Hungarian
Polish
Romanian
@@ -426,16 +427,7 @@ To make maintaining easier please:
Slovenian
Sorbian
-
- Hungarian
- Polish
- Romanian
- Croatian
- Slovak
- Slovenian
- Sorbian
-
-
+
Hungarian
Polish
Romanian
@@ -463,7 +455,7 @@ To make maintaining easier please:
Spanish
-
+
Dutch
English
French
@@ -473,17 +465,8 @@ To make maintaining easier please:
Pogtuguese
Spanish
-
- Dutch
- English
- French
- German Duden
- Italian
- Latin
- Pogtuguese
- Spanish
-
-
+
+
Dutch
English
French
diff --git a/sql/share/charsets/cp1251.xml b/sql/share/charsets/cp1251.xml
index 79b71df9baf..98dd1186c0c 100644
--- a/sql/share/charsets/cp1251.xml
+++ b/sql/share/charsets/cp1251.xml
@@ -119,7 +119,7 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+