24 #include <drizzled/session.h>
25 #include <drizzled/schema.h>
26 #include <drizzled/plugin/event_observer.h>
27 #include <drizzled/message.h>
34 static const std::string PROGRAM_ERROR(
"PROGRAM_ERROR");
37 static const std::string VARCHAR(
"VARCHAR");
38 static const std::string VARBINARY(
"VARBINARY");
39 static const std::string DOUBLE(
"DOUBLE");
40 static const std::string TEXT(
"TEXT");
41 static const std::string BLOB(
"BLOB");
42 static const std::string ENUM(
"ENUM");
43 static const std::string INTEGER(
"INTEGER");
44 static const std::string BIGINT(
"BIGINT");
45 static const std::string DECIMAL(
"DECIMAL");
46 static const std::string DATE(
"DATE");
47 static const std::string EPOCH(
"EPOCH");
48 static const std::string TIMESTAMP(
"TIMESTAMP");
49 static const std::string MICROTIME(
"MICROTIME");
50 static const std::string DATETIME(
"DATETIME");
51 static const std::string TIME(
"TIME");
52 static const std::string UUID(
"UUID");
53 static const std::string BOOLEAN(
"BOOLEAN");
54 static const std::string IPV6(
"IPV6");
56 static const std::string UNDEFINED(
"UNDEFINED");
57 static const std::string RESTRICT(
"RESTRICT");
58 static const std::string CASCADE(
"CASCADE");
59 static const std::string SET_NULL(
"SET NULL");
60 static const std::string NO_ACTION(
"NO ACTION");
61 static const std::string SET_DEFAULT(
"SET DEFAULT");
63 static const std::string YES(
"YES");
64 static const std::string NO(
"NO");
66 static const std::string UNKNOWN_INDEX(
"UNKNOWN_INDEX");
67 static const std::string BTREE(
"BTREE");
68 static const std::string RTREE(
"RTREE");
69 static const std::string HASH(
"HASH");
70 static const std::string FULLTEXT(
"FULLTEXT");
72 static const std::string MATCH_FULL(
"FULL");
73 static const std::string MATCH_PARTIAL(
"PARTIAL");
74 static const std::string MATCH_SIMPLE(
"SIMPLE");
76 const static std::string STANDARD_STRING(
"STANDARD");
77 const static std::string TEMPORARY_STRING(
"TEMPORARY");
78 const static std::string INTERNAL_STRING(
"INTERNAL");
79 const static std::string FUNCTION_STRING(
"FUNCTION");
83 arg.set_version(arg.version() + 1);
84 arg.set_update_timestamp(time(NULL));
89 arg.set_version(arg.version() + 1);
90 arg.set_update_timestamp(time(NULL));
93 bool is_numeric(
const message::Table::Field &field)
95 message::Table::Field::FieldType type= field.type();
99 case message::Table::Field::DOUBLE:
100 case message::Table::Field::INTEGER:
101 case message::Table::Field::BIGINT:
102 case message::Table::Field::DECIMAL:
104 case message::Table::Field::BLOB:
105 case message::Table::Field::VARCHAR:
106 case message::Table::Field::ENUM:
107 case message::Table::Field::DATE:
108 case message::Table::Field::EPOCH:
109 case message::Table::Field::DATETIME:
110 case message::Table::Field::TIME:
111 case message::Table::Field::UUID:
112 case message::Table::Field::BOOLEAN:
113 case message::Table::Field::IPV6:
120 const std::string &type(
const message::Table::Field &field)
122 message::Table::Field::FieldType type= field.type();
126 case message::Table::Field::VARCHAR:
127 return field.string_options().collation().compare(
"binary") ? VARCHAR : VARBINARY;
128 case message::Table::Field::DOUBLE:
130 case message::Table::Field::BLOB:
131 return field.string_options().collation().compare(
"binary") ? TEXT : BLOB;
132 case message::Table::Field::ENUM:
134 case message::Table::Field::INTEGER:
136 case message::Table::Field::BIGINT:
138 case message::Table::Field::DECIMAL:
140 case message::Table::Field::DATE:
142 case message::Table::Field::EPOCH:
144 case message::Table::Field::DATETIME:
146 case message::Table::Field::TIME:
148 case message::Table::Field::UUID:
150 case message::Table::Field::BOOLEAN:
152 case message::Table::Field::IPV6:
159 const std::string &type(drizzled::message::Table::Field::FieldType type)
163 case message::Table::Field::VARCHAR:
165 case message::Table::Field::DOUBLE:
167 case message::Table::Field::BLOB:
169 case message::Table::Field::ENUM:
171 case message::Table::Field::INTEGER:
173 case message::Table::Field::BIGINT:
175 case message::Table::Field::DECIMAL:
177 case message::Table::Field::DATE:
179 case message::Table::Field::EPOCH:
181 case message::Table::Field::DATETIME:
183 case message::Table::Field::TIME:
185 case message::Table::Field::UUID:
187 case message::Table::Field::BOOLEAN:
189 case message::Table::Field::IPV6:
196 const std::string &type(drizzled::message::Table::ForeignKeyConstraint::ForeignKeyOption type)
200 case message::Table::ForeignKeyConstraint::OPTION_RESTRICT:
202 case message::Table::ForeignKeyConstraint::OPTION_CASCADE:
204 case message::Table::ForeignKeyConstraint::OPTION_SET_NULL:
206 case message::Table::ForeignKeyConstraint::OPTION_UNDEF:
207 case message::Table::ForeignKeyConstraint::OPTION_NO_ACTION:
209 case message::Table::ForeignKeyConstraint::OPTION_SET_DEFAULT:
216 const std::string &type(drizzled::message::Table::Index::IndexType type)
220 case message::Table::Index::UNKNOWN_INDEX:
221 return UNKNOWN_INDEX;
222 case message::Table::Index::BTREE:
224 case message::Table::Index::RTREE:
226 case message::Table::Index::HASH:
228 case message::Table::Index::FULLTEXT:
233 return PROGRAM_ERROR;
236 const std::string &type(drizzled::message::Table::ForeignKeyConstraint::ForeignKeyMatchOption type)
240 case message::Table::ForeignKeyConstraint::MATCH_FULL:
242 case message::Table::ForeignKeyConstraint::MATCH_PARTIAL:
243 return MATCH_PARTIAL;
244 case message::Table::ForeignKeyConstraint::MATCH_UNDEFINED:
245 case message::Table::ForeignKeyConstraint::MATCH_SIMPLE:
252 const std::string &type(drizzled::message::Table::TableType type)
256 case message::Table::STANDARD:
257 return STANDARD_STRING;
258 case message::Table::TEMPORARY:
259 return TEMPORARY_STRING;
260 case message::Table::INTERNAL:
261 return INTERNAL_STRING;
262 case message::Table::FUNCTION:
263 return FUNCTION_STRING;
267 return PROGRAM_ERROR;
271 std::ostream& operator<<(std::ostream& output,
const message::Transaction &message)
275 google::protobuf::TextFormat::PrintToString(message, &buffer);
281 std::ostream& operator<<(std::ostream& output,
const message::Table &message)
285 google::protobuf::TextFormat::PrintToString(message, &buffer);