~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/plugin/table_function.cc

  • Committer: Monty Taylor
  • Date: 2010-09-28 07:45:44 UTC
  • mto: (1799.1.2 build)
  • mto: This revision was merged to the branch mainline in revision 1800.
  • Revision ID: mordred@inaugust.com-20100928074544-s3ujnv6s8wro74l2
Added BSD copying file.

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
 
29
29
#include <vector>
30
30
 
 
31
using namespace std;
 
32
 
31
33
namespace drizzled
32
34
{
33
35
 
59
61
  return false;
60
62
}
61
63
 
62
 
plugin::TableFunction *plugin::TableFunction::getFunction(const std::string &arg)
 
64
plugin::TableFunction *plugin::TableFunction::getFunction(const string &arg)
63
65
{
64
66
  return table_functions.getFunction(arg);
65
67
}
66
68
 
67
 
void plugin::TableFunction::getNames(const std::string &arg,
68
 
                                     std::set<std::string> &set_of_names)
 
69
void plugin::TableFunction::getNames(const string &arg,
 
70
                                     set<std::string> &set_of_names)
69
71
{
70
72
  table_functions.getNames(arg, set_of_names);
71
73
}
113
115
    field_options->set_default_null(false);
114
116
    field_constraints->set_is_nullable(false);
115
117
  case TableFunction::STRING:
116
 
    {
117
 
      drizzled::message::Table::Field::StringFieldOptions *string_field_options;
118
 
      if (field_length >= TABLE_FUNCTION_BLOB_SIZE)
119
 
      {
120
 
        field->set_type(drizzled::message::Table::Field::BLOB);
121
 
        string_field_options= field->mutable_string_options();
122
 
        string_field_options->set_collation_id(default_charset_info->number);
123
 
        string_field_options->set_collation(default_charset_info->name);
124
 
      }
125
 
      else
126
 
      {
127
 
        field->set_type(drizzled::message::Table::Field::VARCHAR);
128
 
        string_field_options= field->mutable_string_options();
129
 
        string_field_options->set_length(field_length);
130
 
      }
131
 
    }
 
118
  {
 
119
    drizzled::message::Table::Field::StringFieldOptions *string_field_options;
 
120
    field->set_type(drizzled::message::Table::Field::VARCHAR);
 
121
 
 
122
    string_field_options= field->mutable_string_options();
 
123
    string_field_options->set_length(field_length);
 
124
  }
132
125
    break;
133
126
  case TableFunction::VARBINARY:
134
 
    {
135
 
      drizzled::message::Table::Field::StringFieldOptions *string_field_options;
136
 
      field->set_type(drizzled::message::Table::Field::VARCHAR);
 
127
  {
 
128
    drizzled::message::Table::Field::StringFieldOptions *string_field_options;
 
129
    field->set_type(drizzled::message::Table::Field::VARCHAR);
137
130
 
138
 
      string_field_options= field->mutable_string_options();
139
 
      string_field_options->set_length(field_length);
140
 
      string_field_options->set_collation(my_charset_bin.csname);
141
 
      string_field_options->set_collation_id(my_charset_bin.number);
142
 
    }
 
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);
 
135
  }
143
136
    break;
144
137
  case TableFunction::NUMBER: // Currently NUMBER always has a value
145
138
    field->set_type(drizzled::message::Table::Field::BIGINT);
192
185
  assert(arg);
193
186
  length= length ? length : strlen(arg);
194
187
 
195
 
  if ((*columns_iterator)->char_length() < length)
196
 
    length= (*columns_iterator)->char_length();
197
 
 
198
188
  (*columns_iterator)->store(arg, length, scs);
199
189
  (*columns_iterator)->set_notnull();
200
190
  columns_iterator++;
202
192
 
203
193
void plugin::TableFunction::Generator::push()
204
194
{
205
 
  /* Only accept NULLs */
206
 
  assert((*columns_iterator)->maybe_null());
 
195
#if 0 // @note this needs to be rewritten such that a drizzled::Field object can determine if it should ever be null
 
196
  assert((*columns_iterator)->getTable()->getShare()->getTableProto()->field((*columns_iterator)->getTable()->getFields() - columns_iterator).constraints().is_nullable());
 
197
#endif
207
198
  (*columns_iterator)->set_null();
208
199
  columns_iterator++;
209
200
}