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.0 +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