~ubuntu-branches/ubuntu/trusty/drizzle/trusty

« back to all changes in this revision

Viewing changes to plugin/schema_dictionary/columns.cc

  • Committer: Bazaar Package Importer
  • Author(s): Monty Taylor
  • Date: 2010-10-02 14:17:48 UTC
  • mfrom: (1.1.1 upstream)
  • mto: (2.1.17 sid)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20101002141748-m6vbfbfjhrw1153e
Tags: 2010.09.1802-1
* New upstream release.
* Removed pid-file argument hack.
* Updated GPL-2 address to be new address.
* Directly copy in drizzledump.1 since debian doesn't have sphinx 1.0 yet.
* Link to jquery from libjs-jquery. Add it as a depend.
* Add drizzled.8 symlink to the install files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
 
34
34
  add_field("COLUMN_NAME");
35
35
  add_field("COLUMN_TYPE");
36
 
  add_field("ORDINAL_POSITION", plugin::TableFunction::NUMBER);
37
 
  add_field("COLUMN_DEFAULT");
38
 
  add_field("COLUMN_DEFAULT_IS_NULL", plugin::TableFunction::BOOLEAN);
 
36
  add_field("ORDINAL_POSITION", plugin::TableFunction::NUMBER, 0, false);
 
37
  add_field("COLUMN_DEFAULT", plugin::TableFunction::VARBINARY, 65535, true);
 
38
  add_field("COLUMN_DEFAULT_IS_NULL", plugin::TableFunction::BOOLEAN, 0, false);
39
39
  add_field("COLUMN_DEFAULT_UPDATE");
40
 
  add_field("IS_NULLABLE", plugin::TableFunction::BOOLEAN);
41
 
  add_field("IS_INDEXED", plugin::TableFunction::BOOLEAN);
42
 
  add_field("IS_USED_IN_PRIMARY", plugin::TableFunction::BOOLEAN);
43
 
  add_field("IS_UNIQUE", plugin::TableFunction::BOOLEAN);
44
 
  add_field("IS_MULTI", plugin::TableFunction::BOOLEAN);
45
 
  add_field("IS_FIRST_IN_MULTI", plugin::TableFunction::BOOLEAN);
46
 
  add_field("INDEXES_FOUND_IN", plugin::TableFunction::NUMBER);
 
40
  add_field("IS_AUTO_INCREMENT", plugin::TableFunction::BOOLEAN, 0, false);
 
41
  add_field("IS_NULLABLE", plugin::TableFunction::BOOLEAN, 0, false);
 
42
  add_field("IS_INDEXED", plugin::TableFunction::BOOLEAN, 0, false);
 
43
  add_field("IS_USED_IN_PRIMARY", plugin::TableFunction::BOOLEAN, 0, false);
 
44
  add_field("IS_UNIQUE", plugin::TableFunction::BOOLEAN, 0, false);
 
45
  add_field("IS_MULTI", plugin::TableFunction::BOOLEAN, 0, false);
 
46
  add_field("IS_FIRST_IN_MULTI", plugin::TableFunction::BOOLEAN, 0, false);
 
47
  add_field("INDEXES_FOUND_IN", plugin::TableFunction::NUMBER, 0, false);
47
48
  add_field("DATA_TYPE");
48
49
 
49
50
  add_field("CHARACTER_MAXIMUM_LENGTH", plugin::TableFunction::NUMBER);
51
52
  add_field("NUMERIC_PRECISION", plugin::TableFunction::NUMBER);
52
53
  add_field("NUMERIC_SCALE", plugin::TableFunction::NUMBER);
53
54
 
 
55
  add_field("ENUM_VALUES", plugin::TableFunction::STRING, 1024, true);
 
56
 
54
57
  add_field("COLLATION_NAME");
55
58
 
56
 
  add_field("COLUMN_COMMENT", 1024);
 
59
  add_field("COLUMN_COMMENT", plugin::TableFunction::STRING, 1024, true);
57
60
}
58
61
 
59
62
 
62
65
  column_iterator(0),
63
66
  is_columns_primed(false)
64
67
{
65
 
  Session *session= current_session;
66
 
  drizzled::statement::Select *select= static_cast<statement::Select *>(session->lex->statement);
67
 
 
68
 
  setSchemaPredicate(select->getShowSchema());
69
 
  setTablePredicate(select->getShowTable());
70
68
}
71
69
 
72
70
 
120
118
void ColumnsTool::Generator::fill()
121
119
{
122
120
  /* TABLE_SCHEMA */
123
 
  push(schema_name());
 
121
  assert(getTableProto().schema().length());
 
122
  assert(getTableProto().schema().c_str());
 
123
  push(getTableProto().schema());
124
124
 
125
125
  /* TABLE_NAME */
126
 
  push(table_name());
 
126
  push(getTableProto().name());
127
127
 
128
128
  /* COLUMN_NAME */
129
129
  push(column.name());
135
135
  push(static_cast<int64_t>(column_iterator));
136
136
 
137
137
  /* COLUMN_DEFAULT */
138
 
  push(column.options().default_value());
 
138
  if (column.options().has_default_value())
 
139
  {
 
140
    push(column.options().default_value());
 
141
  }
 
142
  else if (column.options().has_default_bin_value())
 
143
  {
 
144
    push(column.options().default_bin_value().c_str(), column.options().default_bin_value().length());
 
145
  }
 
146
  else if (column.options().has_default_expression())
 
147
  {
 
148
    push(column.options().default_expression());
 
149
  }
 
150
  else
 
151
  {
 
152
    push();
 
153
  }
139
154
 
140
155
  /* COLUMN_DEFAULT_IS_NULL */
141
156
  push(column.options().default_null());
142
157
 
143
158
  /* COLUMN_DEFAULT_UPDATE */
144
 
  push(column.options().update_value());
 
159
  push(column.options().update_expression());
 
160
 
 
161
  /* IS_AUTO_INCREMENT */
 
162
  push(column.numeric_options().is_autoincrement());
145
163
 
146
164
  /* IS_NULLABLE */
147
165
  push(column.constraints().is_nullable());
207
225
 /* "NUMERIC_SCALE" */
208
226
  push(static_cast<int64_t>(column.numeric_options().scale()));
209
227
 
 
228
 /* "ENUM_VALUES" */
 
229
  if (column.type() == drizzled::message::Table::Field::ENUM)
 
230
  {
 
231
    string destination;
 
232
    size_t num_field_values= column.enumeration_values().field_value_size();
 
233
    for (size_t x= 0; x < num_field_values; ++x)
 
234
    {
 
235
      const string &type= column.enumeration_values().field_value(x);
 
236
 
 
237
      if (x != 0)
 
238
        destination.push_back(',');
 
239
 
 
240
      destination.push_back('\'');
 
241
      destination.append(type);
 
242
      destination.push_back('\'');
 
243
    }
 
244
    push(destination);
 
245
  }
 
246
  else
 
247
    push();
 
248
 
210
249
 /* "COLLATION_NAME" */
211
250
  push(column.string_options().collation());
212
251
 
213
252
 /* "COLUMN_COMMENT" */
214
 
  push(column.comment());
 
253
  if (column.has_comment())
 
254
  {
 
255
    push(column.comment());
 
256
  }
 
257
  else
 
258
  {
 
259
    push();
 
260
  }
215
261
}