[CONC-327] !include/!includedir not parsed in my.cnf Created: 2018-04-26 Updated: 2019-06-01 Resolved: 2018-05-02 |
|
| Status: | Closed |
| Project: | MariaDB Connector/C |
| Component/s: | None |
| Affects Version/s: | 3.0.4 |
| Fix Version/s: | 3.0.5 |
| Type: | Bug | Priority: | Critical |
| Reporter: | Klaus Keppler | Assignee: | Georg Richter |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | include, includedir, my.cnf | ||
| Issue Links: |
|
||||||||||||||||||||||||||||||||||||||||
| Description |
|
The current code in ma_default.c does not care for include keywords (!include, !includedir) in my.cnf. 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:
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. |
| Comments |
| Comment by Georg Richter [ 2018-04-28 ] |
|
Using the same code base is not an option. MariaDB Connector/C is licensed under LGPL while MariaDB Server is licensed under GPL. |
| Comment by Klaus Keppler [ 2018-05-02 ] |
|
Thank you for the quick fix - that's great! |