39
40
// These are used to generate strings for types
40
41
static const std::string VARCHAR("VARCHAR");
41
static const std::string VARBINARY("VARBINARY");
42
42
static const std::string DOUBLE("DOUBLE");
43
static const std::string TEXT("TEXT");
44
43
static const std::string BLOB("BLOB");
45
44
static const std::string ENUM("ENUM");
46
45
static const std::string INTEGER("INTEGER");
47
46
static const std::string BIGINT("BIGINT");
48
47
static const std::string DECIMAL("DECIMAL");
49
48
static const std::string DATE("DATE");
50
static const std::string EPOCH("EPOCH");
51
49
static const std::string TIMESTAMP("TIMESTAMP");
52
static const std::string MICROTIME("MICROTIME");
53
50
static const std::string DATETIME("DATETIME");
54
static const std::string TIME("TIME");
55
static const std::string UUID("UUID");
56
static const std::string BOOLEAN("BOOLEAN");
58
52
static const std::string UNDEFINED("UNDEFINED");
59
53
static const std::string RESTRICT("RESTRICT");
75
69
static const std::string MATCH_PARTIAL("PARTIAL");
76
70
static const std::string MATCH_SIMPLE("SIMPLE");
78
const static std::string STANDARD_STRING("STANDARD");
79
const static std::string TEMPORARY_STRING("TEMPORARY");
80
const static std::string INTERNAL_STRING("INTERNAL");
81
const static std::string FUNCTION_STRING("FUNCTION");
72
void init(drizzled::message::Table &arg, const std::string &name_arg, const std::string &schema_arg, const std::string &engine_arg)
74
arg.set_name(name_arg);
75
arg.set_schema(schema_arg);
76
arg.set_creation_timestamp(time(NULL));
77
arg.set_update_timestamp(time(NULL));
78
arg.mutable_engine()->set_name(engine_arg);
80
/* 36 characters for uuid string +1 for NULL */
83
uuid_generate_random(uu);
84
uuid_unparse(uu, uuid_string);
85
arg.set_uuid(uuid_string, 36);
90
void init(drizzled::message::Schema &arg, const std::string &name_arg)
92
arg.set_name(name_arg);
93
arg.mutable_engine()->set_name(std::string("filesystem")); // For the moment we have only one.
94
if (not arg.has_collation())
96
arg.set_collation(default_charset_info->name);
99
/* 36 characters for uuid string +1 for NULL */
101
char uuid_string[37];
102
uuid_generate_random(uu);
103
uuid_unparse(uu, uuid_string);
104
arg.set_uuid(uuid_string, 36);
83
109
void update(drizzled::message::Schema &arg)
92
118
arg.set_update_timestamp(time(NULL));
95
bool is_numeric(const message::Table::Field &field)
97
message::Table::Field::FieldType type= field.type();
101
case message::Table::Field::DOUBLE:
102
case message::Table::Field::INTEGER:
103
case message::Table::Field::BIGINT:
104
case message::Table::Field::DECIMAL:
106
case message::Table::Field::BLOB:
107
case message::Table::Field::VARCHAR:
108
case message::Table::Field::ENUM:
109
case message::Table::Field::DATE:
110
case message::Table::Field::EPOCH:
111
case message::Table::Field::DATETIME:
112
case message::Table::Field::TIME:
113
case message::Table::Field::UUID:
114
case message::Table::Field::BOOLEAN:
121
const std::string &type(const message::Table::Field &field)
123
message::Table::Field::FieldType type= field.type();
127
case message::Table::Field::VARCHAR:
128
return field.string_options().collation().compare("binary") ? VARCHAR : VARBINARY;
129
case message::Table::Field::DOUBLE:
131
case message::Table::Field::BLOB:
132
return field.string_options().collation().compare("binary") ? TEXT : BLOB;
133
case message::Table::Field::ENUM:
135
case message::Table::Field::INTEGER:
137
case message::Table::Field::BIGINT:
139
case message::Table::Field::DECIMAL:
141
case message::Table::Field::DATE:
143
case message::Table::Field::EPOCH:
145
case message::Table::Field::DATETIME:
147
case message::Table::Field::TIME:
149
case message::Table::Field::UUID:
151
case message::Table::Field::BOOLEAN:
158
121
const std::string &type(drizzled::message::Table::Field::FieldType type)
176
139
case message::Table::Field::DATE:
178
case message::Table::Field::EPOCH:
141
case message::Table::Field::TIMESTAMP:
180
143
case message::Table::Field::DATETIME:
182
case message::Table::Field::TIME:
184
case message::Table::Field::UUID:
186
case message::Table::Field::BOOLEAN:
148
return PROGRAM_ERROR;
193
151
const std::string &type(drizzled::message::Table::ForeignKeyConstraint::ForeignKeyOption type)
252
210
return MATCH_SIMPLE;
255
const std::string &type(drizzled::message::Table::TableType type)
259
case message::Table::STANDARD:
260
return STANDARD_STRING;
261
case message::Table::TEMPORARY:
262
return TEMPORARY_STRING;
263
case message::Table::INTERNAL:
264
return INTERNAL_STRING;
265
case message::Table::FUNCTION:
266
return FUNCTION_STRING;
270
return PROGRAM_ERROR;
274
213
std::ostream& operator<<(std::ostream& output, const message::Transaction &message)
276
215
std::string buffer;