On 04/25/2012 05:52 PM, Andrés Tello wrote:
Reads interesting, but...

Why would you need that?

I mean... If I run several databases in the same hardware, I use completely
diferent paths for evertying, so I can have atomic, clean  and specific
files for each instance/version of the database....

Thanks for your opinion.

You're right, it doesn't make too much sense regarding system-wide configuration files, such as /etc/my.cnf. A real use case I see is when we speak about users' config files, like ~/.my.cnf.

Let's say we have two different MySQL versions on one hardware, then it's possible we'll need a bit different options for each instance.

MySQL unfortunately doesn't distinguish between user-specific (usually called rc files) and system-wide config files. Trying to have the patch simple, I applied the feature to all config files (which was not necessary).

The attached patch now is a bit more complicated, but restricts the feature only for config files in user's home directory. I believe this makes more sense, than the original one.

Any comments welcome again.

Cheers,

Honza
diff -up mysql-5.5.22/mysys/default.c.versionedcnf mysql-5.5.22/mysys/default.c
--- mysql-5.5.22/mysys/default.c.versionedcnf	2012-03-02 20:44:47.000000000 +0100
+++ mysql-5.5.22/mysys/default.c	2012-04-27 09:44:01.136938181 +0200
@@ -37,6 +37,7 @@
 #include "m_string.h"
 #include "m_ctype.h"
 #include <my_dir.h>
+#include "mysql_version.h"
 #ifdef __WIN__
 #include <winbase.h>
 #endif
@@ -660,18 +661,24 @@ static int search_default_file(Process_o
 			       const char *config_file)
 {
   char **ext;
+  char **version_ext;
   const char *empty_list[]= { "", 0 };
+  const char *versioned_list[]= { "", "-" MYSQL_SERVER_VERSION, 0 };
   my_bool have_ext= fn_ext(config_file)[0] != 0;
   const char **exts_to_use= have_ext ? empty_list : f_extensions;
+  const char **versioned_exts_to_use= (dir[0] == FN_HOMELIB) ? versioned_list : empty_list;
 
   for (ext= (char**) exts_to_use; *ext; ext++)
-  {
-    int error;
-    if ((error= search_default_file_with_ext(opt_handler, handler_ctx,
-                                             dir, *ext,
-					     config_file, 0)) < 0)
-      return error;
-  }
+    for (version_ext= (char**) versioned_exts_to_use; *version_ext; version_ext++)
+    {
+      int error;
+      char full_ext[FN_REFLEN + sizeof(MYSQL_SERVER_VERSION) + 2];
+      strxmov(full_ext,*ext,*version_ext,NullS);
+      if ((error= search_default_file_with_ext(opt_handler, handler_ctx,
+                                               dir, full_ext,
+                                               config_file, 0)) < 0)
+        return error;
+    }
   return 0;
 }
 

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql

Reply via email to