1
/* - mode: c; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
4
* Copyright (C) 2010 Brian Aker
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2 of the License, or
9
* (at your option) any later version.
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
23
#include "drizzled/display.h"
24
#include "drizzled/item.h"
31
static const std::string PROGRAM_ERROR("PROGRAM_ERROR");
33
static const std::string COM_SLEEP("COM_SLEEP");
34
static const std::string COM_QUIT("COM_QUIT");
35
static const std::string COM_INIT_DB("COM_INIT_DB");
36
static const std::string COM_QUERY("COM_QUERY");
37
static const std::string COM_SHUTDOWN("COM_SHUTDOWN");
38
static const std::string COM_CONNECT("COM_CONNECT");
39
static const std::string COM_PING("COM_PING");
40
static const std::string COM_END("COM_END");
42
static const std::string DRIZZLE_TYPE_LONG("DRIZZLE_TYPE_LONG");
43
static const std::string DRIZZLE_TYPE_DOUBLE("DRIZZLE_TYPE_DOUBLE");
44
static const std::string DRIZZLE_TYPE_NULL("DRIZZLE_TYPE_NULL");
45
static const std::string DRIZZLE_TYPE_TIMESTAMP("DRIZZLE_TYPE_TIMESTAMP");
46
static const std::string DRIZZLE_TYPE_LONGLONG("DRIZZLE_TYPE_LONGLONG");
47
static const std::string DRIZZLE_TYPE_DATETIME("DRIZZLE_TYPE_DATETIME");
48
static const std::string DRIZZLE_TYPE_DATE("DRIZZLE_TYPE_DATE");
49
static const std::string DRIZZLE_TYPE_VARCHAR("DRIZZLE_TYPE_VARCHAR");
50
static const std::string DRIZZLE_TYPE_DECIMAL("DRIZZLE_TYPE_DECIMAL");
51
static const std::string DRIZZLE_TYPE_ENUM("DRIZZLE_TYPE_ENUM");
52
static const std::string DRIZZLE_TYPE_BLOB("DRIZZLE_TYPE_BLOB");
53
static const std::string DRIZZLE_TYPE_UUID("DRIZZLE_TYPE_UUID");
55
static const std::string FIELD_ITEM("FIELD_ITEM");
56
static const std::string FUNC_ITEM("FUNC_ITEM");
57
static const std::string SUM_FUNC_ITEM("SUM_FUNC_ITEM");
58
static const std::string STRING_ITEM("STRING_ITEM");
59
static const std::string INT_ITEM("INT_ITEM");
60
static const std::string REAL_ITEM("REAL_ITEM");
61
static const std::string NULL_ITEM("NULL_ITEM");
62
static const std::string VARBIN_ITEM("VARBIN_ITEM");
63
static const std::string COPY_STR_ITEM("COPY_STR_ITEM");
64
static const std::string FIELD_AVG_ITEM("FIELD_AVG_ITEM");
65
static const std::string DEFAULT_VALUE_ITEM("DEFAULT_VALUE_ITEM");
66
static const std::string PROC_ITEM("PROC_ITEM");
67
static const std::string COND_ITEM("COND_ITEM");
68
static const std::string REF_ITEM("REF_ITEM");
69
static const std::string FIELD_STD_ITEM("FIELD_STD_ITEM");
70
static const std::string FIELD_VARIANCE_ITEM("FIELD_VARIANCE_ITEM");
71
static const std::string INSERT_VALUE_ITEM("INSERT_VALUE_ITEM");
72
static const std::string SUBSELECT_ITEM("SUBSELECT_ITEM");
73
static const std::string ROW_ITEM("ROW_ITEM");
74
static const std::string CACHE_ITEM("CACHE_ITEM");
75
static const std::string TYPE_HOLDER("TYPE_HOLDER");
76
static const std::string PARAM_ITEM("PARAM_ITEM");
77
static const std::string DECIMAL_ITEM("DECIMAL_ITEM");
79
static const std::string YES("YES");
80
static const std::string NO("NO");
82
const std::string &type(drizzled::enum_server_command type)
86
case drizzled::COM_SLEEP :
88
case drizzled::COM_QUIT :
90
case drizzled::COM_INIT_DB :
92
case drizzled::COM_QUERY :
94
case drizzled::COM_SHUTDOWN :
96
case drizzled::COM_CONNECT :
98
case drizzled::COM_PING :
100
case drizzled::COM_END :
105
return PROGRAM_ERROR;
108
const std::string &type(drizzled::Item::Type type)
112
case drizzled::Item::FIELD_ITEM :
114
case drizzled::Item::FUNC_ITEM :
116
case drizzled::Item::SUM_FUNC_ITEM :
117
return SUM_FUNC_ITEM;
118
case drizzled::Item::STRING_ITEM :
120
case drizzled::Item::INT_ITEM :
122
case drizzled::Item::REAL_ITEM :
124
case drizzled::Item::NULL_ITEM :
126
case drizzled::Item::VARBIN_ITEM :
128
case drizzled::Item::COPY_STR_ITEM :
129
return COPY_STR_ITEM;
130
case drizzled::Item::FIELD_AVG_ITEM :
131
return FIELD_AVG_ITEM;
132
case drizzled::Item::DEFAULT_VALUE_ITEM :
133
return DEFAULT_VALUE_ITEM;
134
case drizzled::Item::PROC_ITEM :
136
case drizzled::Item::COND_ITEM :
138
case drizzled::Item::REF_ITEM :
140
case drizzled::Item::FIELD_STD_ITEM :
141
return FIELD_STD_ITEM;
142
case drizzled::Item::FIELD_VARIANCE_ITEM :
143
return FIELD_VARIANCE_ITEM;
144
case drizzled::Item::INSERT_VALUE_ITEM :
145
return INSERT_VALUE_ITEM;
146
case drizzled::Item::SUBSELECT_ITEM :
147
return SUBSELECT_ITEM;
148
case drizzled::Item::ROW_ITEM:
150
case drizzled::Item::CACHE_ITEM :
152
case drizzled::Item::TYPE_HOLDER :
154
case drizzled::Item::PARAM_ITEM :
156
case drizzled::Item::DECIMAL_ITEM :
161
return PROGRAM_ERROR;
165
const std::string &type(drizzled::enum_field_types type)
169
case drizzled::DRIZZLE_TYPE_LONG :
170
return DRIZZLE_TYPE_LONG;
171
case drizzled::DRIZZLE_TYPE_DOUBLE :
172
return DRIZZLE_TYPE_DOUBLE;
173
case drizzled::DRIZZLE_TYPE_NULL :
174
return DRIZZLE_TYPE_NULL;
175
case drizzled::DRIZZLE_TYPE_TIMESTAMP :
176
return DRIZZLE_TYPE_TIMESTAMP;
177
case drizzled::DRIZZLE_TYPE_LONGLONG :
178
return DRIZZLE_TYPE_LONGLONG;
179
case drizzled::DRIZZLE_TYPE_DATETIME :
180
return DRIZZLE_TYPE_DATETIME;
181
case drizzled::DRIZZLE_TYPE_DATE :
182
return DRIZZLE_TYPE_DATE;
183
case drizzled::DRIZZLE_TYPE_VARCHAR :
184
return DRIZZLE_TYPE_VARCHAR;
185
case drizzled::DRIZZLE_TYPE_DECIMAL :
186
return DRIZZLE_TYPE_DECIMAL;
187
case drizzled::DRIZZLE_TYPE_ENUM :
188
return DRIZZLE_TYPE_ENUM;
189
case drizzled::DRIZZLE_TYPE_BLOB :
190
return DRIZZLE_TYPE_BLOB;
191
case drizzled::DRIZZLE_TYPE_UUID :
192
return DRIZZLE_TYPE_UUID;
196
return PROGRAM_ERROR;
199
std::string hexdump(const unsigned char *str, size_t length)
201
static const char hexval[16] = { '0', '1', '2', '3',
204
'c', 'd', 'e', 'f' };
205
unsigned max_cols = 16;
206
std::ostringstream buf;
207
std::ostringstream raw_buf;
209
const unsigned char *e= str + length;
210
for (const unsigned char *i= str; i != e;)
213
for (unsigned col = 0; col < max_cols; ++col)
217
buf << hexval[ ( (*i >> 4) & 0xF ) ]
218
<< hexval[ ( *i & 0x0F ) ]
220
raw_buf << (isprint(*i) ? *i : '.');
233
} /* namespace display */
234
} /* namespace drizzled */