8
Written from Google proto example
11
void updateTable(drizzle::Table *table, const char *name)
15
table->set_name(name);
16
table->set_engine("Innodb");
18
/* Write out some random varchar */
19
for (x= 0; x < 3; x++)
22
drizzle::Table::Field *field = table->add_field();
24
sprintf(buffer, "sample%u", x);
26
field->set_name(buffer);
27
field->set_type(drizzle::Table::VARCHAR);
29
field->set_is_notnull(true);
31
field->set_length(rand() % 100);
35
field->set_collation("utf8_swedish_ci");
36
field->set_characterset("utf8");
40
/* Write out an INTEGER */
42
drizzle::Table::Field *field = table->add_field();
43
field->set_name("number");
44
field->set_type(drizzle::Table::INTEGER);
46
/* Write out a ENUM */
48
drizzle::Table::Field *field = table->add_field();
49
field->set_type(drizzle::Table::ENUM);
50
field->set_name("colors");
51
field->add_values("red");
52
field->add_values("blue");
53
field->add_values("green");
55
/* Write out a BLOB */
57
drizzle::Table::Field *field = table->add_field();
58
field->set_name("some_btye_string");
59
field->set_type(drizzle::Table::BLOB);
61
/* Write out a DECIMAL */
63
drizzle::Table::Field *field = table->add_field();
64
field->set_name("important_number");
65
field->set_type(drizzle::Table::DECIMAL);
69
/* Write out a VARCHAR with index */
71
drizzle::Table::Field *field = table->add_field();
72
field->set_name("important_string");
73
field->set_type(drizzle::Table::VARCHAR);
74
field->set_length(20);
75
field->set_unique(true);
79
drizzle::Table::Index *index = table->add_index();
80
index->set_name("number");
81
index->set_primary(true);
84
for (x= 0; x < 2; x++)
87
drizzle::Table::Index *index = table->add_index();
88
drizzle::Table::KeyPart *keypart = index->add_values();
90
sprintf(buffer, "sample%u", x);
91
index->set_name(buffer);
93
keypart->set_name(buffer);
98
int main(int argc, char* argv[])
100
GOOGLE_PROTOBUF_VERIFY_VERSION;
103
cerr << "Usage: " << argv[0] << " SCHEMA" << endl;
107
drizzle::Table table;
109
updateTable(&table, "example_table");
111
fstream output(argv[1], ios::out | ios::trunc | ios::binary);
112
if (!table.SerializeToOstream(&output))
114
cerr << "Failed to write schema." << endl;