~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/module/loader.cc

  • Committer: Brian Aker
  • Date: 2011-01-05 16:29:27 UTC
  • mto: (2060.2.1 clean)
  • mto: This revision was merged to the branch mainline in revision 2063.
  • Revision ID: brian@tangent.org-20110105162927-fi2gnmlz35qcagik
Add additional gperf for non-reserved SQL keywords.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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 */
15
15
 
16
 
#include <config.h>
 
16
#include "config.h"
17
17
 
18
18
#include <dlfcn.h>
19
19
 
26
26
 
27
27
#include <boost/program_options.hpp>
28
28
 
29
 
#include <drizzled/option.h>
30
 
#include <drizzled/internal/m_string.h>
 
29
#include "drizzled/option.h"
 
30
#include "drizzled/internal/m_string.h"
31
31
 
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"
49
49
 
50
50
#include <boost/foreach.hpp>
51
51
 
141
141
static void unlock_variables(Session *session, drizzle_system_variables *vars);
142
142
static void cleanup_variables(drizzle_system_variables *vars);
143
143
 
 
144
/* declared in set_var.cc */
 
145
extern sys_var *intern_find_sys_var(const char *str, uint32_t length, bool no_error);
 
146
 
144
147
 
145
148
/****************************************************************************
146
149
  Plugin support code
162
165
 
163
166
  if (registry.find(library->getName()))
164
167
  {
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());
167
170
    return false;
168
171
  }
173
176
 
174
177
  if (registry.find(manifest->name))
175
178
  {
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);
191
194
    return false;
192
195
  }
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());
195
198
  return true;
196
199
}
220
223
  {
221
224
    if (module->getManifest().init(loading_context))
222
225
    {
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());
226
229
      return true;
370
373
  /*
371
374
    Now we initialize all remaining plugins
372
375
  */
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();
375
378
    
376
 
  while (modules != module_list.end())
 
379
  while (modules != registry.getModulesMap().end())
377
380
  {
378
 
    module::Module *module= *modules;
 
381
    module::Module *module= (*modules).second;
379
382
    ++modules;
380
383
    if (module->isInited == false)
381
384
    {
388
391
    }
389
392
  }
390
393
 
391
 
 
392
394
  BOOST_FOREACH(plugin::Plugin::map::value_type value, registry.getPluginsMap())
393
395
  {
394
396
    value.second->prime();
397
399
  return false;
398
400
}
399
401
 
400
 
/*
401
 
  Window of opportunity for plugins to issue any queries with the database up and running but with no user's connected.
402
 
*/
403
 
void plugin_startup_window(module::Registry &registry, drizzled::Session &session)
404
 
{
405
 
  BOOST_FOREACH(plugin::Plugin::map::value_type value, registry.getPluginsMap())
406
 
  {
407
 
    value.second->startup(session);
408
 
  }
409
 
}
410
 
 
411
402
class PrunePlugin :
412
403
  public unary_function<string, bool>
413
404
{
459
450
    library= registry.addLibrary(plugin_name, builtin);
460
451
    if (library == NULL)
461
452
    {
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());
465
456
      return true;
469
460
    if (plugin_add(registry, tmp_root, library, long_options))
470
461
    {
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());
475
466
      return true;
509
500
****************************************************************************/
510
501
 
511
502
 
 
503
sys_var *find_sys_var(const char *str, uint32_t length)
 
504
{
 
505
  return intern_find_sys_var(str, length, false);
 
506
}
 
507
 
512
508
 
513
509
void plugin_sessionvar_init(Session *session)
514
510
{