13
13
along with this program; if not, write to the Free Software
14
14
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
27
27
#include <boost/program_options.hpp>
29
#include <drizzled/option.h>
30
#include <drizzled/internal/m_string.h>
29
#include "drizzled/option.h"
30
#include "drizzled/internal/m_string.h"
32
#include <drizzled/plugin.h>
33
#include <drizzled/module/load_list.h>
34
#include <drizzled/module/library.h>
35
#include <drizzled/module/registry.h>
36
#include <drizzled/module/option_context.h>
37
#include <drizzled/sql_parse.h>
38
#include <drizzled/show.h>
39
#include <drizzled/cursor.h>
40
#include <drizzled/set_var.h>
41
#include <drizzled/session.h>
42
#include <drizzled/item/null.h>
43
#include <drizzled/error.h>
44
#include <drizzled/gettext.h>
45
#include <drizzled/errmsg_print.h>
46
#include <drizzled/strfunc.h>
47
#include <drizzled/pthread_globals.h>
48
#include <drizzled/util/tokenize.h>
32
#include "drizzled/plugin.h"
33
#include "drizzled/module/load_list.h"
34
#include "drizzled/module/library.h"
35
#include "drizzled/module/registry.h"
36
#include "drizzled/module/option_context.h"
37
#include "drizzled/sql_parse.h"
38
#include "drizzled/show.h"
39
#include "drizzled/cursor.h"
40
#include "drizzled/set_var.h"
41
#include "drizzled/session.h"
42
#include "drizzled/item/null.h"
43
#include "drizzled/error.h"
44
#include "drizzled/gettext.h"
45
#include "drizzled/errmsg_print.h"
46
#include "drizzled/strfunc.h"
47
#include "drizzled/pthread_globals.h"
48
#include "drizzled/util/tokenize.h"
50
50
#include <boost/foreach.hpp>
141
141
static void unlock_variables(Session *session, drizzle_system_variables *vars);
142
142
static void cleanup_variables(drizzle_system_variables *vars);
144
/* declared in set_var.cc */
145
extern sys_var *intern_find_sys_var(const char *str, uint32_t length, bool no_error);
145
148
/****************************************************************************
146
149
Plugin support code
163
166
if (registry.find(library->getName()))
165
errmsg_printf(error::WARN, ER(ER_PLUGIN_EXISTS),
168
errmsg_printf(ERRMSG_LVL_WARN, ER(ER_PLUGIN_EXISTS),
166
169
library->getName().c_str());
174
177
if (registry.find(manifest->name))
176
errmsg_printf(error::ERROR,
179
errmsg_printf(ERRMSG_LVL_ERROR,
177
180
_("Plugin '%s' contains the name '%s' in its manifest, which "
178
181
"has already been registered.\n"),
179
182
library->getName().c_str(),
190
193
registry.add(tmp);
193
errmsg_printf(error::ERROR, ER(ER_CANT_FIND_DL_ENTRY),
196
errmsg_printf(ERRMSG_LVL_ERROR, ER(ER_CANT_FIND_DL_ENTRY),
194
197
library->getName().c_str());
221
224
if (module->getManifest().init(loading_context))
223
errmsg_printf(error::ERROR,
226
errmsg_printf(ERRMSG_LVL_ERROR,
224
227
_("Plugin '%s' init function returned error.\n"),
225
228
module->getName().c_str());
371
374
Now we initialize all remaining plugins
373
module::Registry::ModuleList module_list= registry.getList();
374
module::Registry::ModuleList::iterator modules= module_list.begin();
376
std::map<std::string, module::Module *>::const_iterator modules=
377
registry.getModulesMap().begin();
376
while (modules != module_list.end())
379
while (modules != registry.getModulesMap().end())
378
module::Module *module= *modules;
381
module::Module *module= (*modules).second;
380
383
if (module->isInited == false)
401
Window of opportunity for plugins to issue any queries with the database up and running but with no user's connected.
403
void plugin_startup_window(module::Registry ®istry, drizzled::Session &session)
405
BOOST_FOREACH(plugin::Plugin::map::value_type value, registry.getPluginsMap())
407
value.second->startup(session);
411
402
class PrunePlugin :
412
403
public unary_function<string, bool>
459
450
library= registry.addLibrary(plugin_name, builtin);
460
451
if (library == NULL)
462
errmsg_printf(error::ERROR,
453
errmsg_printf(ERRMSG_LVL_ERROR,
463
454
_("Couldn't load plugin library named '%s'.\n"),
464
455
plugin_name.c_str());
469
460
if (plugin_add(registry, tmp_root, library, long_options))
471
462
registry.removeLibrary(plugin_name);
472
errmsg_printf(error::ERROR,
463
errmsg_printf(ERRMSG_LVL_ERROR,
473
464
_("Couldn't load plugin named '%s'.\n"),
474
465
plugin_name.c_str());
509
500
****************************************************************************/
503
sys_var *find_sys_var(const char *str, uint32_t length)
505
return intern_find_sys_var(str, length, false);
513
509
void plugin_sessionvar_init(Session *session)