Bug #46236 mysqld no longer respects the --language startup option
Submitted: 16 Jul 2009 17:48 Modified: 17 Jul 2009 9:57
Reporter: Philip Stoev Email Updates:
Status: Duplicate Impact on me:
None 
Category:MySQL Server: Charsets Severity:S1 (Critical)
Version:5.4,6.0 OS:Any
Assigned to: Assigned Account CPU Architecture:Any
Tags: regression
Triage: Needs Triage: D1 (Critical)

[16 Jul 2009 17:48] Philip Stoev
Description:
mysqld does not appear to respect the --language startup option. It continues to look for errmsg.sys in some other location.

5.0 and 5.1 are not affected.

This also breaks mysql-test-run.pl --start-and-exit

How to repeat:
./mysqld --no-defaults --language=/build/bzr/azalea/sql/share/english/

090716 20:46:59 [ERROR] Can't find messagefile '/usr/local/mysql/share/mysql/english/errmsg.sys'
090716 20:47:00 [ERROR] Aborting
[16 Jul 2009 17:53] Philip Stoev
It turns out that --language was renamed to --lc-messages-dir. I think that we need to provide
A). A meaningful error message, different from the one currently displayed
B). Keep the old option and depreciate it over several releases.
[16 Jul 2009 17:56] Philip Stoev
This patch needs to be applied to MTRv1 in order to use the new option

=== modified file 'mysql-test/lib/v1/mysql-test-run.pl'
--- mysql-test/lib/v1/mysql-test-run.pl 2009-04-27 10:03:32 +0000
+++ mysql-test/lib/v1/mysql-test-run.pl 2009-07-16 17:54:11 +0000
@@ -1461,7 +1461,7 @@
   #
   # --datadir must exist, mysqld will chdir into it
   #
-  my $list= `$exe_mysqld --no-defaults --datadir=$tmpdir --language=$path_language --skip-grant-tables --verbose --help`;
+  my $list= `$exe_mysqld --no-defaults --datadir=$tmpdir --lc-messages-dir=$path_language --skip-grant-tables --verbose --help`;

   foreach my $line (split('\n', $list))
   {
@@ -1803,7 +1803,7 @@
   if ( $glob_use_embedded_server )
   {
     mtr_add_arg($args,
-      " -A --language=$path_language");
+      " -A --lc-messages-dir=$path_language");
     mtr_add_arg($args,
       " -A --datadir=$slave->[0]->{'path_myddir'}");
     mtr_add_arg($args,
@@ -3140,7 +3140,7 @@

   if ( ! $glob_netware )
   {
-    mtr_add_arg($args, "--language=%s", $path_language);
+    mtr_add_arg($args, "--lc-messages-dir=%s", $path_language);
     mtr_add_arg($args, "--character-sets-dir=%s", $path_charsetsdir);
   }

@@ -3876,7 +3876,7 @@
   }

   mtr_add_arg($args, "%s--default-character-set=latin1", $prefix);
-  mtr_add_arg($args, "%s--language=%s", $prefix, $path_language);
+  mtr_add_arg($args, "%s--lc-messages-dir=%s", $prefix, $path_language);
   mtr_add_arg($args, "%s--tmpdir=$opt_tmpdir", $prefix);

   # Increase default connect_timeout to avoid intermittent
[16 Jul 2009 17:58] Philip Stoev
Furthermore, several scripts and code files continue to mention --language.
[17 Jul 2009 8:51] Philip Stoev
--language and --lc-messages-dir have different semantics. To obtain the same results,

--language=/build/bzr/mysql-5.1/sql/share/english

but

--lc-messages-dir=/build/bzr/azalea/sql/share
[17 Jul 2009 9:57] Sergei Golubchik
duplicate of bug#46218
[23 Jul 2009 10:24] Bugs System
Pushed into 5.4.4-alpha (revid:alik@sun.com-20090723102221-ps4uaphwbxzj8p0q) (version source revid:bar@mysql.com-20090721083750-oput8niky7meuyjd) (merge vers: 5.4.4-alpha) (pib:11)
[12 Aug 2009 21:44] Paul Dubois
Noted in 5.4.2 changelog because next 5.4 version will be 5.4.2 and not 5.4.4.
[14 Aug 2009 22:41] Paul Dubois
Ignore previous comment about 5.4.2.