23 #include <drizzled/display.h>
24 #include <drizzled/item.h>
33 static const std::string PROGRAM_ERROR(
"PROGRAM_ERROR");
35 static const std::string COM_SLEEP(
"COM_SLEEP");
36 static const std::string COM_QUIT(
"COM_QUIT");
37 static const std::string COM_USE_SCHEMA(
"COM_USE_SCHEMA");
38 static const std::string COM_QUERY(
"COM_QUERY");
39 static const std::string COM_SHUTDOWN(
"COM_SHUTDOWN");
40 static const std::string COM_CONNECT(
"COM_CONNECT");
41 static const std::string COM_PING(
"COM_PING");
42 static const std::string COM_END(
"COM_END");
44 static const std::string DRIZZLE_TYPE_LONG(
"DRIZZLE_TYPE_LONG");
45 static const std::string DRIZZLE_TYPE_DOUBLE(
"DRIZZLE_TYPE_DOUBLE");
46 static const std::string DRIZZLE_TYPE_NULL(
"DRIZZLE_TYPE_NULL");
47 static const std::string DRIZZLE_TYPE_TIMESTAMP(
"DRIZZLE_TYPE_TIMESTAMP");
48 static const std::string DRIZZLE_TYPE_MICROTIME(
"DRIZZLE_TYPE_MICROTIME");
49 static const std::string DRIZZLE_TYPE_LONGLONG(
"DRIZZLE_TYPE_LONGLONG");
50 static const std::string DRIZZLE_TYPE_DATETIME(
"DRIZZLE_TYPE_DATETIME");
51 static const std::string DRIZZLE_TYPE_TIME(
"DRIZZLE_TYPE_TIME");
52 static const std::string DRIZZLE_TYPE_DATE(
"DRIZZLE_TYPE_DATE");
53 static const std::string DRIZZLE_TYPE_VARCHAR(
"DRIZZLE_TYPE_VARCHAR");
54 static const std::string DRIZZLE_TYPE_DECIMAL(
"DRIZZLE_TYPE_DECIMAL");
55 static const std::string DRIZZLE_TYPE_ENUM(
"DRIZZLE_TYPE_ENUM");
56 static const std::string DRIZZLE_TYPE_BLOB(
"DRIZZLE_TYPE_BLOB");
57 static const std::string DRIZZLE_TYPE_UUID(
"DRIZZLE_TYPE_UUID");
58 static const std::string DRIZZLE_TYPE_BOOLEAN(
"DRIZZLE_TYPE_BOOLEAN");
59 static const std::string DRIZZLE_TYPE_IPV6(
"DRIZZLE_TYPE_IPV6");
61 static const std::string FIELD_ITEM(
"FIELD_ITEM");
62 static const std::string FUNC_ITEM(
"FUNC_ITEM");
63 static const std::string SUM_FUNC_ITEM(
"SUM_FUNC_ITEM");
64 static const std::string STRING_ITEM(
"STRING_ITEM");
65 static const std::string INT_ITEM(
"INT_ITEM");
66 static const std::string REAL_ITEM(
"REAL_ITEM");
67 static const std::string NULL_ITEM(
"NULL_ITEM");
68 static const std::string VARBIN_ITEM(
"VARBIN_ITEM");
69 static const std::string COPY_STR_ITEM(
"COPY_STR_ITEM");
70 static const std::string FIELD_AVG_ITEM(
"FIELD_AVG_ITEM");
71 static const std::string DEFAULT_VALUE_ITEM(
"DEFAULT_VALUE_ITEM");
72 static const std::string PROC_ITEM(
"PROC_ITEM");
73 static const std::string COND_ITEM(
"COND_ITEM");
74 static const std::string REF_ITEM(
"REF_ITEM");
75 static const std::string FIELD_STD_ITEM(
"FIELD_STD_ITEM");
76 static const std::string FIELD_VARIANCE_ITEM(
"FIELD_VARIANCE_ITEM");
77 static const std::string INSERT_VALUE_ITEM(
"INSERT_VALUE_ITEM");
78 static const std::string SUBSELECT_ITEM(
"SUBSELECT_ITEM");
79 static const std::string ROW_ITEM(
"ROW_ITEM");
80 static const std::string CACHE_ITEM(
"CACHE_ITEM");
81 static const std::string TYPE_HOLDER(
"TYPE_HOLDER");
82 static const std::string PARAM_ITEM(
"PARAM_ITEM");
83 static const std::string BOOLEAN_ITEM(
"BOOLEAN_ITEM");
84 static const std::string DECIMAL_ITEM(
"DECIMAL_ITEM");
86 static const std::string ITEM_CAST_SIGNED(
"ITEM_CAST_SIGNED");
87 static const std::string ITEM_CAST_UNSIGNED(
"ITEM_CAST_UNSIGNED");
88 static const std::string ITEM_CAST_BINARY(
"ITEM_CAST_BINARY");
89 static const std::string ITEM_CAST_BOOLEAN(
"ITEM_CAST_BOOLEAN");
90 static const std::string ITEM_CAST_DATE(
"ITEM_CAST_DATE");
91 static const std::string ITEM_CAST_TIME(
"ITEM_CAST_TIME");
92 static const std::string ITEM_CAST_DATETIME(
"ITEM_CAST_DATETIME");
93 static const std::string ITEM_CAST_CHAR(
"ITEM_CAST_CHAR");
94 static const std::string ITEM_CAST_DECIMAL(
"ITEM_CAST_DECIMAL");
96 static const std::string STRING_RESULT_STRING(
"STRING");
97 static const std::string REAL_RESULT_STRING(
"REAL");
98 static const std::string INT_RESULT_STRING(
"INTEGER");
99 static const std::string ROW_RESULT_STRING(
"ROW");
100 static const std::string DECIMAL_RESULT_STRING(
"DECIMAL");
102 static const std::string YES(
"YES");
103 static const std::string NO(
"NO");
105 const std::string &type(drizzled::Cast_target type)
109 case drizzled::ITEM_CAST_SIGNED:
110 return ITEM_CAST_SIGNED;
111 case drizzled::ITEM_CAST_UNSIGNED:
112 return ITEM_CAST_UNSIGNED;
113 case drizzled::ITEM_CAST_BINARY:
114 return ITEM_CAST_BINARY;
115 case drizzled::ITEM_CAST_BOOLEAN:
116 return ITEM_CAST_BOOLEAN;
117 case drizzled::ITEM_CAST_DATE:
118 return ITEM_CAST_DATE;
119 case drizzled::ITEM_CAST_TIME:
120 return ITEM_CAST_TIME;
121 case drizzled::ITEM_CAST_DATETIME:
122 return ITEM_CAST_DATETIME;
123 case drizzled::ITEM_CAST_CHAR:
124 return ITEM_CAST_CHAR;
125 case drizzled::ITEM_CAST_DECIMAL:
126 return ITEM_CAST_DECIMAL;
132 const std::string &type(drizzled::enum_server_command type)
136 case drizzled::COM_SLEEP :
139 case drizzled::COM_KILL :
141 static std::string COM_KILL(
"COM_KILL");
145 case drizzled::COM_QUIT :
148 case drizzled::COM_USE_SCHEMA :
149 return COM_USE_SCHEMA;
151 case drizzled::COM_QUERY :
154 case drizzled::COM_SHUTDOWN :
157 case drizzled::COM_CONNECT :
160 case drizzled::COM_PING :
163 case drizzled::COM_END :
168 return PROGRAM_ERROR;
171 const std::string &type(drizzled::Item::Type type)
175 case drizzled::Item::FIELD_ITEM :
177 case drizzled::Item::FUNC_ITEM :
179 case drizzled::Item::SUM_FUNC_ITEM :
180 return SUM_FUNC_ITEM;
181 case drizzled::Item::STRING_ITEM :
183 case drizzled::Item::INT_ITEM :
185 case drizzled::Item::REAL_ITEM :
187 case drizzled::Item::NULL_ITEM :
189 case drizzled::Item::VARBIN_ITEM :
191 case drizzled::Item::COPY_STR_ITEM :
192 return COPY_STR_ITEM;
193 case drizzled::Item::FIELD_AVG_ITEM :
194 return FIELD_AVG_ITEM;
195 case drizzled::Item::DEFAULT_VALUE_ITEM :
196 return DEFAULT_VALUE_ITEM;
197 case drizzled::Item::PROC_ITEM :
199 case drizzled::Item::COND_ITEM :
201 case drizzled::Item::REF_ITEM :
203 case drizzled::Item::FIELD_STD_ITEM :
204 return FIELD_STD_ITEM;
205 case drizzled::Item::FIELD_VARIANCE_ITEM :
206 return FIELD_VARIANCE_ITEM;
207 case drizzled::Item::INSERT_VALUE_ITEM :
208 return INSERT_VALUE_ITEM;
209 case drizzled::Item::SUBSELECT_ITEM :
210 return SUBSELECT_ITEM;
211 case drizzled::Item::ROW_ITEM:
213 case drizzled::Item::CACHE_ITEM :
215 case drizzled::Item::TYPE_HOLDER :
217 case drizzled::Item::PARAM_ITEM :
219 case drizzled::Item::BOOLEAN_ITEM :
221 case drizzled::Item::DECIMAL_ITEM :
226 return PROGRAM_ERROR;
229 const std::string &type(Item_result type)
234 return STRING_RESULT_STRING;
236 return REAL_RESULT_STRING;
238 return INT_RESULT_STRING;
240 return ROW_RESULT_STRING;
242 return DECIMAL_RESULT_STRING;
246 return PROGRAM_ERROR;
249 const std::string &type(drizzled::enum_field_types type)
253 case drizzled::DRIZZLE_TYPE_LONG :
254 return DRIZZLE_TYPE_LONG;
255 case drizzled::DRIZZLE_TYPE_DOUBLE :
256 return DRIZZLE_TYPE_DOUBLE;
257 case drizzled::DRIZZLE_TYPE_NULL :
258 return DRIZZLE_TYPE_NULL;
259 case drizzled::DRIZZLE_TYPE_MICROTIME :
260 return DRIZZLE_TYPE_MICROTIME;
261 case drizzled::DRIZZLE_TYPE_TIMESTAMP :
262 return DRIZZLE_TYPE_TIMESTAMP;
263 case drizzled::DRIZZLE_TYPE_LONGLONG :
264 return DRIZZLE_TYPE_LONGLONG;
265 case drizzled::DRIZZLE_TYPE_DATETIME :
266 return DRIZZLE_TYPE_DATETIME;
267 case drizzled::DRIZZLE_TYPE_TIME :
268 return DRIZZLE_TYPE_TIME;
269 case drizzled::DRIZZLE_TYPE_DATE :
270 return DRIZZLE_TYPE_DATE;
271 case drizzled::DRIZZLE_TYPE_VARCHAR :
272 return DRIZZLE_TYPE_VARCHAR;
273 case drizzled::DRIZZLE_TYPE_DECIMAL :
274 return DRIZZLE_TYPE_DECIMAL;
275 case drizzled::DRIZZLE_TYPE_ENUM :
276 return DRIZZLE_TYPE_ENUM;
277 case drizzled::DRIZZLE_TYPE_BLOB :
278 return DRIZZLE_TYPE_BLOB;
279 case drizzled::DRIZZLE_TYPE_UUID :
280 return DRIZZLE_TYPE_UUID;
281 case drizzled::DRIZZLE_TYPE_BOOLEAN :
282 return DRIZZLE_TYPE_BOOLEAN;
283 case drizzled::DRIZZLE_TYPE_IPV6 :
284 return DRIZZLE_TYPE_IPV6;
288 return PROGRAM_ERROR;
291 std::string hexdump(
const unsigned char *str,
size_t length)
293 static const char hexval[16] = {
'0',
'1',
'2',
'3',
296 'c',
'd',
'e',
'f' };
297 unsigned max_cols = 16;
298 std::ostringstream buf;
299 std::ostringstream raw_buf;
301 const unsigned char *e= str + length;
302 for (
const unsigned char *i= str; i != e;)
305 for (
unsigned col = 0; col < max_cols; ++col)
309 buf << hexval[ ( (*i >> 4) & 0xF ) ]
310 << hexval[ ( *i & 0x0F ) ]
312 raw_buf << (isprint(*i) ? *i :
'.');
TODO: Rename this file - func.h is stupid.