20
20
#include "config.h"
22
#include <drizzled/current_session.h>
23
#include <drizzled/gettext.h>
24
#include <drizzled/global_charset_info.h>
25
22
#include <drizzled/plugin/table_function.h>
26
#include <drizzled/session.h>
27
#include <drizzled/show.h>
28
23
#include <drizzled/table_function_container.h>
24
#include <drizzled/gettext.h>
25
#include "drizzled/global_charset_info.h"
26
#include "drizzled/session.h"
27
#include "drizzled/current_session.h"
37
38
void plugin::TableFunction::init()
39
drizzled::message::table::init(proto, getTableLabel(), identifier.getSchemaName(), "FunctionEngine");
40
drizzled::message::Engine *engine;
41
drizzled::message::Table::TableOptions *table_options;
43
proto.set_name(getTableLabel());
44
proto.set_schema(identifier.getSchemaName());
40
45
proto.set_type(drizzled::message::Table::FUNCTION);
41
46
proto.set_creation_timestamp(0);
42
47
proto.set_update_timestamp(0);
49
table_options= proto.mutable_options();
50
table_options->set_collation_id(default_charset_info->number);
51
table_options->set_collation(default_charset_info->name);
53
engine= proto.mutable_engine();
54
engine->set_name("FunctionEngine");
45
57
bool plugin::TableFunction::addPlugin(plugin::TableFunction *tool)
52
plugin::TableFunction *plugin::TableFunction::getFunction(const std::string &arg)
64
plugin::TableFunction *plugin::TableFunction::getFunction(const string &arg)
54
66
return table_functions.getFunction(arg);
57
void plugin::TableFunction::getNames(const std::string &arg,
58
std::set<std::string> &set_of_names)
69
void plugin::TableFunction::getNames(const string &arg,
70
set<std::string> &set_of_names)
60
72
table_functions.getNames(arg, set_of_names);
93
105
field_options= field->mutable_options();
94
106
field_constraints= field->mutable_constraints();
95
107
field_options->set_default_null(is_default_null);
96
field_constraints->set_is_notnull(not is_default_null);
108
field_constraints->set_is_nullable(is_default_null);
113
case TableFunction::BOOLEAN: // Currently BOOLEAN always has a value
115
field_options->set_default_null(false);
116
field_constraints->set_is_nullable(false);
100
117
case TableFunction::STRING:
102
drizzled::message::Table::Field::StringFieldOptions *string_field_options;
103
if (field_length >= TABLE_FUNCTION_BLOB_SIZE)
105
field->set_type(drizzled::message::Table::Field::BLOB);
106
string_field_options= field->mutable_string_options();
107
string_field_options->set_collation_id(default_charset_info->number);
108
string_field_options->set_collation(default_charset_info->name);
112
field->set_type(drizzled::message::Table::Field::VARCHAR);
113
string_field_options= field->mutable_string_options();
114
string_field_options->set_length(field_length);
119
drizzled::message::Table::Field::StringFieldOptions *string_field_options;
120
field->set_type(drizzled::message::Table::Field::VARCHAR);
122
string_field_options= field->mutable_string_options();
123
string_field_options->set_length(field_length);
118
126
case TableFunction::VARBINARY:
120
drizzled::message::Table::Field::StringFieldOptions *string_field_options;
121
field->set_type(drizzled::message::Table::Field::VARCHAR);
128
drizzled::message::Table::Field::StringFieldOptions *string_field_options;
129
field->set_type(drizzled::message::Table::Field::VARCHAR);
123
string_field_options= field->mutable_string_options();
124
string_field_options->set_length(field_length);
125
string_field_options->set_collation(my_charset_bin.csname);
126
string_field_options->set_collation_id(my_charset_bin.number);
129
case TableFunction::NUMBER:
130
field->set_type(drizzled::message::Table::Field::BIGINT);
132
case TableFunction::SIZE:
133
field->set_type(drizzled::message::Table::Field::BIGINT);
134
field_constraints->set_is_unsigned(true);
136
case TableFunction::BOOLEAN: // Currently BOOLEAN always has a value
137
field->set_type(drizzled::message::Table::Field::BOOLEAN);
138
field_constraints->set_is_unsigned(true);
131
string_field_options= field->mutable_string_options();
132
string_field_options->set_length(field_length);
133
string_field_options->set_collation(my_charset_bin.csname);
134
string_field_options->set_collation_id(my_charset_bin.number);
137
case TableFunction::NUMBER: // Currently NUMBER always has a value
138
field->set_type(drizzled::message::Table::Field::BIGINT);