~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/utility_functions/schema.cc

  • Committer: Monty Taylor
  • Date: 2011-02-13 17:26:39 UTC
  • mfrom: (2157.2.2 give-in-to-pkg-config)
  • mto: This revision was merged to the branch mainline in revision 2166.
  • Revision ID: mordred@inaugust.com-20110213172639-nhy7i72sfhoq13ms
Merged in pkg-config fixes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
3
 *
4
 
 *  Copyright (C) 2008 Sun Microsystems
 
4
 *  Copyright (C) 2008 Sun Microsystems, Inc.
5
5
 *  Copyright (C) 2010 Stewart Smith
6
6
 *
7
7
 *  This program is free software; you can redistribute it and/or modify
21
21
#include "config.h"
22
22
 
23
23
#include <drizzled/session.h>
24
 
#include <drizzled/function/str/strfunc.h>
25
 
 
26
 
using namespace drizzled;
27
 
 
28
 
class DatabaseFunction :public Item_str_func
29
 
{
30
 
public:
31
 
  DatabaseFunction() :Item_str_func() {}
32
 
  String *val_str(String *);
33
 
  void fix_length_and_dec()
34
 
  {
35
 
    max_length= MAX_FIELD_NAME * system_charset_info->mbmaxlen;
36
 
    maybe_null=1;
37
 
  }
38
 
  const char *func_name() const { return "database"; }
39
 
  const char *fully_qualified_func_name() const { return "database()"; }
40
 
};
41
 
 
42
 
String *DatabaseFunction::val_str(String *str)
 
24
#include "plugin/utility_functions/functions.h"
 
25
 
 
26
namespace drizzled
 
27
{
 
28
 
 
29
namespace utility_functions
 
30
{
 
31
 
 
32
String *Schema::val_str(String *str)
43
33
{
44
34
  assert(fixed == 1);
45
 
  Session *session= current_session;
46
 
  if (session->db.empty())
 
35
  util::string::const_shared_ptr schema= getSession().schema();
 
36
  if (not schema or schema->empty())
47
37
  {
48
38
    null_value= 1;
49
39
    return 0;
50
40
  }
51
 
  else
52
 
    str->copy(session->db.c_str(), session->db.length(), system_charset_info);
 
41
 
 
42
  str->copy(*schema, system_charset_info);
 
43
 
53
44
  return str;
54
45
}
55
46
 
56
 
plugin::Create_function<DatabaseFunction> *database_function= NULL;
57
 
 
58
 
static int initialize(drizzled::module::Context &context)
59
 
{
60
 
  database_function= new plugin::Create_function<DatabaseFunction>("database");
61
 
  context.add(database_function);
62
 
  return 0;
63
 
}
64
 
 
65
 
DRIZZLE_DECLARE_PLUGIN
66
 
{
67
 
  DRIZZLE_VERSION_ID,
68
 
  "database_function",
69
 
  "1.0",
70
 
  "Stewart Smith",
71
 
  "returns the current database",
72
 
  PLUGIN_LICENSE_GPL,
73
 
  initialize, /* Plugin Init */
74
 
  NULL,   /* system variables */
75
 
  NULL    /* config options */
76
 
}
77
 
DRIZZLE_DECLARE_PLUGIN_END;
 
47
} /* namespace utility_functions */
 
48
} /* namespace drizzled */