~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/plugin/table_function.h

  • Committer: Brian Aker
  • Date: 2010-03-17 19:18:40 UTC
  • mto: This revision was merged to the branch mainline in revision 1354.
  • Revision ID: brian@gaz-20100317191840-9ro7fajqp6lhaqjo
Update, we now have all of the ANSI INFORMATION_SCHEMA listed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
44
44
namespace plugin
45
45
{
46
46
 
 
47
// Not thread safe, but plugins are just loaded in a single thread right
 
48
// now.
 
49
static const char *local_string_append(const char *arg1, const char *arg2)
 
50
{
 
51
  static char buffer[1024];
 
52
  char *buffer_ptr= buffer;
 
53
  strcpy(buffer_ptr, arg1);
 
54
  buffer_ptr+= strlen(arg1);
 
55
  buffer_ptr[0]= '-';
 
56
  buffer_ptr++;
 
57
  strcpy(buffer_ptr, arg2);
 
58
 
 
59
  return buffer;
 
60
}
47
61
 
48
62
class TableFunction : public Plugin
49
63
{
55
69
  TableIdentifier identifier;
56
70
  std::string local_path;
57
71
  std::string local_schema;
 
72
  std::string local_table_name;
 
73
  std::string original_table_label;
58
74
 
59
75
  void setName(); // init name
60
76
 
62
78
 
63
79
public:
64
80
  TableFunction(const char *schema_arg, const char *table_arg) :
65
 
    Plugin(table_arg, "TableFunction"),
66
 
    identifier(schema_arg, table_arg)
 
81
    Plugin(local_string_append(schema_arg, table_arg) , "TableFunction"),
 
82
    identifier(schema_arg, table_arg),
 
83
    original_table_label(table_arg)
67
84
  {
68
85
    init();
69
86
  }
120
137
    arg.CopyFrom(proto);
121
138
  }
122
139
 
 
140
  const std::string &getTableLabel()
 
141
  { 
 
142
    return original_table_label;
 
143
  }
 
144
 
 
145
  const std::string &getIdentifierTableName()
 
146
  { 
 
147
    if (local_table_name.empty())
 
148
    {
 
149
      local_table_name= identifier.getTableName();
 
150
      std::transform(local_table_name.begin(), local_table_name.end(),
 
151
                     local_table_name.begin(), ::tolower);
 
152
    }
 
153
 
 
154
    return local_table_name;
 
155
  }
 
156
 
123
157
  const std::string &getSchemaHome()
124
158
  { 
125
 
    if (local_schema.length() == 0)
 
159
    if (local_schema.empty())
126
160
    {
127
161
      local_schema= identifier.getSchemaName();
128
162
      std::transform(local_schema.begin(), local_schema.end(),
134
168
 
135
169
  const std::string &getPath()
136
170
  { 
137
 
    if (local_path.length() == 0)
 
171
    if (local_path.empty())
138
172
    {
139
173
      local_path= identifier.getPath();
140
174
      std::transform(local_path.begin(), local_path.end(),