17
17
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22
#include <drizzled/current_session.h>
23
#include <drizzled/gettext.h>
24
#include <drizzled/global_charset_info.h>
22
25
#include <drizzled/plugin/table_function.h>
26
#include <drizzled/session.h>
27
#include <drizzled/show.h>
23
28
#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"
29
#include <drizzled/sql_lex.h>
34
35
static TableFunctionContainer table_functions;
36
37
void plugin::TableFunction::init()
38
drizzled::message::Engine *engine;
39
drizzled::message::Table::TableOptions *table_options;
41
proto.set_name(getTableLabel());
42
proto.set_schema(identifier.getSchemaName());
39
drizzled::message::table::init(proto, getTableLabel(), identifier.getSchemaName(), "FunctionEngine");
43
40
proto.set_type(drizzled::message::Table::FUNCTION);
44
41
proto.set_creation_timestamp(0);
45
42
proto.set_update_timestamp(0);
47
table_options= proto.mutable_options();
48
table_options->set_collation_id(default_charset_info->number);
49
table_options->set_collation(default_charset_info->name);
51
engine= proto.mutable_engine();
52
engine->set_name("FunctionEngine");
43
message::set_is_replicated(proto, false);
55
46
bool plugin::TableFunction::addPlugin(plugin::TableFunction *tool)
57
48
assert(tool != NULL);
58
table_functions.addFunction(tool);
49
table_functions.addFunction(tool);
70
61
table_functions.getNames(arg, set_of_names);
64
LEX& plugin::TableFunction::Generator::lex()
66
return getSession().lex();
69
statement::Statement& plugin::TableFunction::Generator::statement()
71
return *lex().statement;
73
74
plugin::TableFunction::Generator *plugin::TableFunction::generator(Field **arg)
75
76
return new Generator(arg);
103
104
field_options= field->mutable_options();
104
105
field_constraints= field->mutable_constraints();
105
106
field_options->set_default_null(is_default_null);
106
field_constraints->set_is_nullable(is_default_null);
107
field_constraints->set_is_notnull(not is_default_null);
111
case TableFunction::BOOLEAN: // Currently BOOLEAN always has a value
113
field_options->set_default_null(false);
114
field_constraints->set_is_nullable(false);
115
111
case TableFunction::STRING:
117
113
drizzled::message::Table::Field::StringFieldOptions *string_field_options;
141
137
string_field_options->set_collation_id(my_charset_bin.number);
144
case TableFunction::NUMBER: // Currently NUMBER always has a value
145
field->set_type(drizzled::message::Table::Field::BIGINT);
140
case TableFunction::NUMBER:
141
field->set_type(drizzled::message::Table::Field::BIGINT);
143
case TableFunction::SIZE:
144
field->set_type(drizzled::message::Table::Field::BIGINT);
145
field_constraints->set_is_unsigned(true);
147
case TableFunction::BOOLEAN: // Currently BOOLEAN always has a value
148
field->set_type(drizzled::message::Table::Field::BOOLEAN);
149
field_constraints->set_is_unsigned(true);
230
234
bool plugin::TableFunction::Generator::isWild(const std::string &predicate)
232
if (not getSession().lex->wild)
235
239
bool match= wild_case_compare(system_charset_info,
236
240
predicate.c_str(),
237
getSession().lex->wild->ptr());