~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/message/table_writer.cc

Merged Nathan from lp:~nlws/drizzle/fix-string-c-ptr-overrun

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#include <iostream>
2
2
#include <fstream>
3
3
#include <string>
4
 
#include "table.pb.h"
 
4
#include <drizzled/message/table.pb.h>
 
5
 
5
6
using namespace std;
 
7
using namespace drizzled::message;
6
8
 
7
9
/*
8
10
  Written from Google proto example
9
11
*/
10
12
 
11
 
void fill_engine(drizzle::Table::StorageEngine *engine)
 
13
void fill_engine(::drizzled::message::Table::StorageEngine *engine)
12
14
{
13
 
  using namespace drizzle;
14
 
  using std::string;
15
15
  int16_t x;
16
16
 
17
17
  engine->set_name("InnoDB");
31
31
  for (x= 0; x < 2; x++)
32
32
  {
33
33
    option= engine->add_option();
34
 
    option->set_name(option_names[x]);
35
 
    option->set_value(option_values[x]);
36
 
    option->set_type(Table::StorageEngine::EngineOption::STRING);
 
34
    option->set_option_name(option_names[x]);
 
35
    option->set_option_value(option_values[x]);
 
36
    option->set_option_type(Table::StorageEngine::EngineOption::STRING);
37
37
  }
38
38
}
39
39
 
40
 
void new_index_to_table( drizzle::Table *table,
41
 
                         const std::string name,
42
 
                         uint16_t num_index_parts,
43
 
                         uint32_t field_indexes[],
44
 
                         uint32_t compare_lengths[],
45
 
                         bool is_primary,
46
 
                         bool is_unique)
 
40
void new_index_to_table(::drizzled::message::Table *table,
 
41
                        const string name,
 
42
                        uint16_t num_index_parts,
 
43
                        uint32_t field_indexes[],
 
44
                        uint32_t compare_lengths[],
 
45
                        bool is_primary,
 
46
                        bool is_unique)
47
47
{
48
 
  using namespace drizzle;
49
 
  uint16_t x;
 
48
  uint16_t x= 0;
50
49
 
51
50
  Table::Index *index;
52
 
  Table::Field *field;
53
51
  Table::Index::IndexPart *index_part;
54
52
 
55
 
  index= table->add_index();
 
53
  index= table->add_indexes();
56
54
 
57
55
  index->set_name(name);
58
56
  index->set_type(Table::Index::BTREE);
63
61
  {
64
62
    index_part= index->add_index_part();
65
63
 
66
 
    field= index_part->mutable_field();
67
 
    *field= table->field(field_indexes[x]);
 
64
    index_part->set_fieldnr(field_indexes[x]);
68
65
 
69
66
    if (compare_lengths[x] > 0)
70
67
      index_part->set_compare_length(compare_lengths[x]);
73
70
  }
74
71
}
75
72
 
76
 
void fill_table(drizzle::Table *table, const char *name)
 
73
void fill_table(::drizzled::message::Table *table, const char *name)
77
74
{
78
75
  uint16_t x;
79
76
 
80
 
  using namespace drizzle;
81
 
 
82
77
  Table::Field *field;
83
78
  Table::Field::FieldConstraints *field_constraints;
84
 
  Table::Field::FieldOptions *field_options;
85
79
  Table::Field::StringFieldOptions *string_field_options;
86
80
  Table::Field::NumericFieldOptions *numeric_field_options;
87
81
  Table::Field::SetFieldOptions *set_field_options;
125
119
    field->set_name("colors");
126
120
 
127
121
    set_field_options= field->mutable_set_options();
128
 
    set_field_options->add_value("red");
129
 
    set_field_options->add_value("blue");
130
 
    set_field_options->add_value("green");
131
 
    set_field_options->set_count_elements(set_field_options->value_size());
 
122
    set_field_options->add_field_value("red");
 
123
    set_field_options->add_field_value("blue");
 
124
    set_field_options->add_field_value("green");
 
125
    set_field_options->set_count_elements(set_field_options->field_value_size());
132
126
  }
133
127
  /* Write out a BLOB */
134
128
  {
185
179
    return -1;
186
180
  }
187
181
 
188
 
  drizzle::Table table;
 
182
  Table table;
189
183
 
190
184
  fill_table(&table, "example_table");
191
185