mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
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.
This commit is contained in:
@ -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));
|
||||
}
|
||||
|
Reference in New Issue
Block a user