diff options
author | Georgi Kodinov <Georgi.Kodinov@Oracle.com> | 2010-10-04 15:54:41 +0300 |
---|---|---|
committer | Georgi Kodinov <Georgi.Kodinov@Oracle.com> | 2010-10-04 15:54:41 +0300 |
commit | c050a4524ff3ec74a8d6932091e479eeaacff7f0 (patch) | |
tree | c60863e20b4656b29eed7bef0606750b8d9bb9ce /sql-common/client_plugin.c | |
parent | 8789c7972339340feb6a49903ff247de580bc5dd (diff) | |
download | mariadb-git-c050a4524ff3ec74a8d6932091e479eeaacff7f0.tar.gz |
Bug #56767: Make sure client plugins in 1054 are compatible with
connectors plugins
Implemented changes needed to keep the client plugin API compatible with
the existing plugins :
1. Provided an options() client plugin API to let the application pass
options to the plugin after loading it
2. Added "License" (const char *) to specify the client plugin's license
3. Added "mysql_api" as a placeholder that the client library can use
to pass function pointers to the plugin so that the plugin can call the
C lib back.
4. Updated the existing client plugins to comply with the API change.
5. Added more detailed error message generation for Windows.
Diffstat (limited to 'sql-common/client_plugin.c')
-rw-r--r-- | sql-common/client_plugin.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/sql-common/client_plugin.c b/sql-common/client_plugin.c index 9526f5fdc4b..858eb492d7a 100644 --- a/sql-common/client_plugin.c +++ b/sql-common/client_plugin.c @@ -322,6 +322,9 @@ mysql_load_plugin_v(MYSQL *mysql, const char *name, int type, char dlpath[FN_REFLEN+1]; void *sym, *dlhandle; struct st_mysql_client_plugin *plugin; +#ifdef WIN32 + char win_errormsg[2048]; +#endif DBUG_ENTER ("mysql_load_plugin_v"); DBUG_PRINT ("entry", ("name=%s type=%d int argc=%d", name, type, argc)); @@ -359,8 +362,15 @@ mysql_load_plugin_v(MYSQL *mysql, const char *name, int type, if ((dlhandle= dlopen(dlpath, RTLD_NOW))) goto have_plugin; #endif + DBUG_PRINT ("info", ("failed to dlopen")); +#ifdef WIN32 + FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, + 0, GetLastError(), 0, win_errormsg, 2048, NULL); + errormsg= win_errormsg; +#else errmsg= dlerror(); +#endif goto err; } @@ -451,3 +461,15 @@ mysql_client_find_plugin(MYSQL *mysql, const char *name, int type) DBUG_RETURN (p); } + +/* see <mysql/client_plugin.h> for a full description */ +int STDCALL mysql_plugin_options(struct st_mysql_client_plugin *plugin, + const char *option, + const void *value) +{ + DBUG_ENTER("mysql_plugin_options"); + /* does the plugin support options call? */ + if (!plugin || !plugin->options) + DBUG_RETURN(1); + DBUG_RETURN(plugin->options(option, value)); +} |