Details
-
Bug
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Fixed
-
3.0.4
-
None
Description
The current code in ma_default.c does not care for include keywords (!include, !includedir) in my.cnf.
The whole parse code looks completely different to the my.cnf parser of the MariaDB Server (mysys/my_default.c)
The API documentation of mysql_optionsv(... MYSQL_READ_DEFAULT_FILE ...) links to the my.cnf documentation, which says nothing about {{!include}}s only being parseable by the MariaDB server.
The default location of the MariaDB socket is /tmp/mysql.sock, but many distributions use different locations (eg. CentOS 7: /var/lib/mysql/mysql.sock). This differing location can be specified eg. in /etc/my.cnf.d/client.cnf:
#
|
# These two groups are read by the client library
|
# Use it for options that affect all clients, but not the server
|
#
|
|
[client]
|
socket=/var/lib/mysql/mysql.sock
|
|
# This group is not read by mysql client library,
|
# If you use the same .cnf file for MySQL and MariaDB,
|
# use it for MariaDB-only client options
|
[client-mariadb]
|
While above configuration snippet works fine with MySQL Connector/C, the MariaDB Connector/C silently ignores the !includedir keyword. Thus, the socket= directive is not read, and the client looks for the socket at the wrong location.
A simple local workaround is to hard-code the "correct" location of the MariaDB socket into the application, or ask the user to configure it directly in /etc/my.cnf. But this is neither clean nor portable.
I don't know what's easier: importing the my.cnf config parser from MariaDB into Connector/C, or to implement the "include" functionality independently. However, it should be better to maintain if there's only one code base for parsing my.cnf files.
Attachments
Issue Links
- relates to
-
CONC-396 !includedir in my.cnf does not include all .cnf and .ini files in the directory
- Open
-
CONC-402 Replace underscores with dashes in conf_key values in mariadb_defaults array
- Closed
-
CONC-404 Add option that corresponds to --defaults-group-suffix MariaDB command-line option
- Open
-
CONC-394 Some TLS-related options are not settable in my.cnf
- Closed
-
CONC-395 Dashes and underscores are not interchangeable in options in my.cnf
- Closed
-
CONC-399 Add option that corresponds to --defaults-extra-file MariaDB command-line option
- Open
-
CONC-415 Option prefixes not supported in my.cnf
- Open
-
CONC-416 On Windows, C/C looks for first my.cnf/my.ini in GetSystemDirectory() instead of GetSystemWindowsDirectory()
- Closed
-
ODBC-229 Add parameters that correspond to MYSQL_READ_DEFAULT_FILE and MYSQL_READ_DEFAULT_GROUP options from MariaDB Connector/C
- Closed