~posulliv/drizzle/memcached_applier

« back to all changes in this revision

Viewing changes to drizzled/message/table_writer.cc

  • Committer: Jay Pipes
  • Date: 2009-08-03 14:23:22 UTC
  • mfrom: (1039.2.68 staging)
  • mto: This revision was merged to the branch mainline in revision 1078.
  • Revision ID: jpipes@serialcoder-20090803142322-1g67h7su9mocg9ig
Merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
#include <drizzled/message/table.pb.h>
5
5
 
6
6
using namespace std;
7
 
using namespace drizzled::message;
 
7
using namespace drizzled;
8
8
 
9
9
/*
10
10
  Written from Google proto example
11
11
*/
12
12
 
13
 
static void fill_engine(::drizzled::message::Table::StorageEngine *engine)
 
13
static void fill_engine(message::Table::StorageEngine *engine)
14
14
{
15
15
  int16_t x;
16
16
 
17
17
  engine->set_name("InnoDB");
18
 
  Table::StorageEngine::EngineOption *option;
 
18
  message::Table::StorageEngine::EngineOption *option;
19
19
 
20
20
  string option_names[2]= {
21
21
    "INDEX_DIRECTORY"
33
33
    option= engine->add_option();
34
34
    option->set_option_name(option_names[x]);
35
35
    option->set_option_value(option_values[x]);
36
 
    option->set_option_type(Table::StorageEngine::EngineOption::STRING);
 
36
    option->set_option_type(message::Table::StorageEngine::EngineOption::STRING);
37
37
  }
38
38
}
39
39
 
40
 
static void new_index_to_table(::drizzled::message::Table *table,
 
40
static void new_index_to_table(message::Table *table,
41
41
                               const string name,
42
42
                               uint16_t num_index_parts,
43
43
                               uint32_t field_indexes[],
47
47
{
48
48
  uint16_t x= 0;
49
49
 
50
 
  Table::Index *index;
51
 
  Table::Index::IndexPart *index_part;
 
50
  message::Table::Index *index;
 
51
  message::Table::Index::IndexPart *index_part;
52
52
 
53
53
  index= table->add_indexes();
54
54
 
55
55
  index->set_name(name);
56
 
  index->set_type(Table::Index::BTREE);
 
56
  index->set_type(message::Table::Index::BTREE);
57
57
  index->set_is_primary(is_primary);
58
58
  index->set_is_unique(is_unique);
59
59
 
70
70
  }
71
71
}
72
72
 
73
 
static void fill_table(::drizzled::message::Table *table, const char *name)
 
73
static void fill_table(message::Table *table, const char *name)
74
74
{
75
75
  uint16_t x;
76
76
 
77
 
  Table::Field *field;
78
 
  Table::Field::FieldConstraints *field_constraints;
79
 
  Table::Field::StringFieldOptions *string_field_options;
80
 
  Table::Field::NumericFieldOptions *numeric_field_options;
81
 
  Table::Field::SetFieldOptions *set_field_options;
 
77
  message::Table::Field *field;
 
78
  message::Table::Field::FieldConstraints *field_constraints;
 
79
  message::Table::Field::StringFieldOptions *string_field_options;
 
80
  message::Table::Field::NumericFieldOptions *numeric_field_options;
 
81
  message::Table::Field::SetFieldOptions *set_field_options;
82
82
 
83
83
  table->set_name(name);
84
 
  table->set_type(Table::STANDARD);
 
84
  table->set_type(message::Table::STANDARD);
85
85
 
86
86
  /* Write out some random varchar */
87
87
  for (x= 0; x < 3; x++)
94
94
    sprintf(buffer, "sample%u", x);
95
95
 
96
96
    field->set_name(buffer);
97
 
    field->set_type(Table::Field::VARCHAR);
 
97
    field->set_type(message::Table::Field::VARCHAR);
98
98
 
99
99
    field_constraints->set_is_nullable((x % 2));
100
100
 
110
110
  {
111
111
    field= table->add_field();
112
112
    field->set_name("number");
113
 
    field->set_type(Table::Field::INTEGER);
 
113
    field->set_type(message::Table::Field::INTEGER);
114
114
  }
115
115
  /* Write out a ENUM */
116
116
  {
117
117
    field= table->add_field();
118
 
    field->set_type(Table::Field::ENUM);
 
118
    field->set_type(message::Table::Field::ENUM);
119
119
    field->set_name("colors");
120
120
 
121
121
    set_field_options= field->mutable_set_options();
128
128
  {
129
129
    field= table->add_field();
130
130
    field->set_name("some_btye_string");
131
 
    field->set_type(Table::Field::BLOB);
 
131
    field->set_type(message::Table::Field::BLOB);
132
132
  }
133
133
 
134
134
  /* Write out a DECIMAL */
135
135
  {
136
136
    field= table->add_field();
137
137
    field->set_name("important_number");
138
 
    field->set_type(Table::Field::DECIMAL);
 
138
    field->set_type(message::Table::Field::DECIMAL);
139
139
 
140
140
    field_constraints= field->mutable_constraints();
141
141
    field_constraints->set_is_nullable(true);
164
164
  }
165
165
 
166
166
  /* Do engine-specific stuff */
167
 
  Table::StorageEngine *engine= table->mutable_engine();
 
167
  message::Table::StorageEngine *engine= table->mutable_engine();
168
168
  fill_engine(engine);
169
169
 
170
170
}
179
179
    return -1;
180
180
  }
181
181
 
182
 
  Table table;
 
182
  message::Table table;
183
183
 
184
184
  fill_table(&table, "example_table");
185
185