~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/display.cc

  • Committer: Brian Aker
  • Date: 2010-11-26 22:40:33 UTC
  • mto: This revision was merged to the branch mainline in revision 1958.
  • Revision ID: brian@tangent.org-20101126224033-yt9a3o82w2rhaihp
Adding select for update test with flush locks engaged.

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19
19
 */
20
20
 
21
 
#include <config.h>
22
 
 
23
 
#include <drizzled/display.h>
24
 
#include <drizzled/item.h>
25
 
 
26
 
#include <cassert>
27
 
#include <iostream>
28
 
#include <sstream>
 
21
#include "config.h"
 
22
 
 
23
#include "drizzled/display.h"
 
24
 
 
25
#include <assert.h>
29
26
 
30
27
namespace drizzled {
31
28
namespace display {
45
42
static const std::string DRIZZLE_TYPE_DOUBLE("DRIZZLE_TYPE_DOUBLE"); 
46
43
static const std::string DRIZZLE_TYPE_NULL("DRIZZLE_TYPE_NULL"); 
47
44
static const std::string DRIZZLE_TYPE_TIMESTAMP("DRIZZLE_TYPE_TIMESTAMP"); 
48
 
static const std::string DRIZZLE_TYPE_MICROTIME("DRIZZLE_TYPE_MICROTIME"); 
49
45
static const std::string DRIZZLE_TYPE_LONGLONG("DRIZZLE_TYPE_LONGLONG"); 
50
46
static const std::string DRIZZLE_TYPE_DATETIME("DRIZZLE_TYPE_DATETIME"); 
51
 
static const std::string DRIZZLE_TYPE_TIME("DRIZZLE_TYPE_TIME"); 
52
47
static const std::string DRIZZLE_TYPE_DATE("DRIZZLE_TYPE_DATE"); 
53
48
static const std::string DRIZZLE_TYPE_VARCHAR("DRIZZLE_TYPE_VARCHAR"); 
54
49
static const std::string DRIZZLE_TYPE_DECIMAL("DRIZZLE_TYPE_DECIMAL"); 
55
50
static const std::string DRIZZLE_TYPE_ENUM("DRIZZLE_TYPE_ENUM"); 
56
51
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
 
 
60
 
static const std::string FIELD_ITEM("FIELD_ITEM");
61
 
static const std::string FUNC_ITEM("FUNC_ITEM");
62
 
static const std::string SUM_FUNC_ITEM("SUM_FUNC_ITEM");
63
 
static const std::string STRING_ITEM("STRING_ITEM");
64
 
static const std::string INT_ITEM("INT_ITEM");
65
 
static const std::string REAL_ITEM("REAL_ITEM");
66
 
static const std::string NULL_ITEM("NULL_ITEM");
67
 
static const std::string VARBIN_ITEM("VARBIN_ITEM");
68
 
static const std::string COPY_STR_ITEM("COPY_STR_ITEM");
69
 
static const std::string FIELD_AVG_ITEM("FIELD_AVG_ITEM");
70
 
static const std::string DEFAULT_VALUE_ITEM("DEFAULT_VALUE_ITEM");
71
 
static const std::string PROC_ITEM("PROC_ITEM");
72
 
static const std::string COND_ITEM("COND_ITEM");
73
 
static const std::string REF_ITEM("REF_ITEM");
74
 
static const std::string FIELD_STD_ITEM("FIELD_STD_ITEM");
75
 
static const std::string FIELD_VARIANCE_ITEM("FIELD_VARIANCE_ITEM");
76
 
static const std::string INSERT_VALUE_ITEM("INSERT_VALUE_ITEM");
77
 
static const std::string SUBSELECT_ITEM("SUBSELECT_ITEM");
78
 
static const std::string ROW_ITEM("ROW_ITEM");
79
 
static const std::string CACHE_ITEM("CACHE_ITEM");
80
 
static const std::string TYPE_HOLDER("TYPE_HOLDER");
81
 
static const std::string PARAM_ITEM("PARAM_ITEM");
82
 
static const std::string BOOLEAN_ITEM("BOOLEAN_ITEM");
83
 
static const std::string DECIMAL_ITEM("DECIMAL_ITEM");
84
 
 
85
 
static const std::string ITEM_CAST_SIGNED("ITEM_CAST_SIGNED");
86
 
static const std::string ITEM_CAST_UNSIGNED("ITEM_CAST_UNSIGNED");
87
 
static const std::string ITEM_CAST_BINARY("ITEM_CAST_BINARY");
88
 
static const std::string ITEM_CAST_BOOLEAN("ITEM_CAST_BOOLEAN");
89
 
static const std::string ITEM_CAST_DATE("ITEM_CAST_DATE");
90
 
static const std::string ITEM_CAST_TIME("ITEM_CAST_TIME");
91
 
static const std::string ITEM_CAST_DATETIME("ITEM_CAST_DATETIME");
92
 
static const std::string ITEM_CAST_CHAR("ITEM_CAST_CHAR");
93
 
static const std::string ITEM_CAST_DECIMAL("ITEM_CAST_DECIMAL");
94
 
 
95
 
static const std::string STRING_RESULT_STRING("STRING");
96
 
static const std::string REAL_RESULT_STRING("REAL");
97
 
static const std::string INT_RESULT_STRING("INTEGER");
98
 
static const std::string ROW_RESULT_STRING("ROW");
99
 
static const std::string DECIMAL_RESULT_STRING("DECIMAL");
 
52
static const std::string DRIZZLE_TYPE_MAX("DRIZZLE_TYPE_MAX"); 
100
53
 
101
54
static const std::string YES("YES");
102
55
static const std::string NO("NO");
103
56
 
104
 
const std::string &type(drizzled::Cast_target type)
105
 
{
106
 
  switch (type)
107
 
  {
108
 
  case drizzled::ITEM_CAST_SIGNED:
109
 
    return ITEM_CAST_SIGNED;
110
 
  case drizzled::ITEM_CAST_UNSIGNED:
111
 
    return ITEM_CAST_UNSIGNED;
112
 
  case drizzled::ITEM_CAST_BINARY:
113
 
    return ITEM_CAST_BINARY;
114
 
  case drizzled::ITEM_CAST_BOOLEAN:
115
 
    return ITEM_CAST_BOOLEAN;
116
 
  case drizzled::ITEM_CAST_DATE:
117
 
    return ITEM_CAST_DATE;
118
 
  case drizzled::ITEM_CAST_TIME:
119
 
    return ITEM_CAST_TIME;
120
 
  case drizzled::ITEM_CAST_DATETIME:
121
 
    return ITEM_CAST_DATETIME;
122
 
  case drizzled::ITEM_CAST_CHAR:
123
 
    return ITEM_CAST_CHAR;
124
 
  case drizzled::ITEM_CAST_DECIMAL:
125
 
    return ITEM_CAST_DECIMAL;
126
 
  }
127
 
 
128
 
  abort();
129
 
}
130
57
 
131
58
const std::string &type(drizzled::enum_server_command type)
132
59
{
154
81
  return PROGRAM_ERROR;
155
82
}
156
83
 
157
 
const std::string &type(drizzled::Item::Type type)
158
 
{
159
 
  switch (type)
160
 
  {
161
 
  case drizzled::Item::FIELD_ITEM :
162
 
    return FIELD_ITEM;
163
 
  case drizzled::Item::FUNC_ITEM :
164
 
    return FUNC_ITEM;
165
 
  case drizzled::Item::SUM_FUNC_ITEM :
166
 
    return SUM_FUNC_ITEM;
167
 
  case drizzled::Item::STRING_ITEM :
168
 
    return STRING_ITEM;
169
 
  case drizzled::Item::INT_ITEM :
170
 
    return INT_ITEM;
171
 
  case drizzled::Item::REAL_ITEM :
172
 
    return REAL_ITEM;
173
 
  case drizzled::Item::NULL_ITEM :
174
 
    return NULL_ITEM;
175
 
  case drizzled::Item::VARBIN_ITEM :
176
 
    return VARBIN_ITEM;
177
 
  case drizzled::Item::COPY_STR_ITEM :
178
 
    return COPY_STR_ITEM;
179
 
  case drizzled::Item::FIELD_AVG_ITEM :
180
 
    return FIELD_AVG_ITEM;
181
 
  case drizzled::Item::DEFAULT_VALUE_ITEM :
182
 
    return DEFAULT_VALUE_ITEM;
183
 
  case drizzled::Item::PROC_ITEM :
184
 
    return PROC_ITEM;
185
 
  case drizzled::Item::COND_ITEM :
186
 
    return COND_ITEM;
187
 
  case drizzled::Item::REF_ITEM :
188
 
    return REF_ITEM;
189
 
  case drizzled::Item::FIELD_STD_ITEM :
190
 
    return FIELD_STD_ITEM;
191
 
  case drizzled::Item::FIELD_VARIANCE_ITEM :
192
 
    return FIELD_VARIANCE_ITEM;
193
 
  case drizzled::Item::INSERT_VALUE_ITEM :
194
 
    return INSERT_VALUE_ITEM;
195
 
  case drizzled::Item::SUBSELECT_ITEM :
196
 
    return SUBSELECT_ITEM;
197
 
  case drizzled::Item::ROW_ITEM:
198
 
    return ROW_ITEM;
199
 
  case drizzled::Item::CACHE_ITEM :
200
 
    return CACHE_ITEM;
201
 
  case drizzled::Item::TYPE_HOLDER :
202
 
    return TYPE_HOLDER;
203
 
  case drizzled::Item::PARAM_ITEM :
204
 
    return PARAM_ITEM;
205
 
  case drizzled::Item::BOOLEAN_ITEM :
206
 
    return BOOLEAN_ITEM;
207
 
  case drizzled::Item::DECIMAL_ITEM :
208
 
    return DECIMAL_ITEM;
209
 
  }
210
 
 
211
 
  assert(0);
212
 
  return PROGRAM_ERROR;
213
 
}
214
 
 
215
 
const std::string &type(Item_result type)
216
 
{
217
 
  switch (type)
218
 
  {
219
 
  case STRING_RESULT:
220
 
    return STRING_RESULT_STRING;
221
 
  case REAL_RESULT:
222
 
    return REAL_RESULT_STRING;
223
 
  case INT_RESULT:
224
 
    return INT_RESULT_STRING;
225
 
  case ROW_RESULT:
226
 
    return ROW_RESULT_STRING;
227
 
  case DECIMAL_RESULT:
228
 
    return DECIMAL_RESULT_STRING;
229
 
  }
230
 
 
231
 
  assert(0);
232
 
  return PROGRAM_ERROR;
233
 
}
234
84
 
235
85
const std::string &type(drizzled::enum_field_types type)
236
86
{
242
92
    return DRIZZLE_TYPE_DOUBLE;
243
93
  case drizzled::DRIZZLE_TYPE_NULL : 
244
94
    return DRIZZLE_TYPE_NULL;
245
 
  case drizzled::DRIZZLE_TYPE_MICROTIME : 
246
 
    return DRIZZLE_TYPE_MICROTIME;
247
95
  case drizzled::DRIZZLE_TYPE_TIMESTAMP : 
248
96
    return DRIZZLE_TYPE_TIMESTAMP;
249
97
  case drizzled::DRIZZLE_TYPE_LONGLONG : 
250
98
    return DRIZZLE_TYPE_LONGLONG;
251
99
  case drizzled::DRIZZLE_TYPE_DATETIME : 
252
100
    return DRIZZLE_TYPE_DATETIME;
253
 
  case drizzled::DRIZZLE_TYPE_TIME : 
254
 
    return DRIZZLE_TYPE_TIME;
255
101
  case drizzled::DRIZZLE_TYPE_DATE : 
256
102
    return DRIZZLE_TYPE_DATE;
257
103
  case drizzled::DRIZZLE_TYPE_VARCHAR : 
262
108
    return DRIZZLE_TYPE_ENUM;
263
109
  case drizzled::DRIZZLE_TYPE_BLOB : 
264
110
    return DRIZZLE_TYPE_BLOB;
265
 
  case drizzled::DRIZZLE_TYPE_UUID : 
266
 
    return DRIZZLE_TYPE_UUID;
267
 
  case drizzled::DRIZZLE_TYPE_BOOLEAN : 
268
 
    return DRIZZLE_TYPE_BOOLEAN;
269
111
  }
270
112
 
271
113
  assert(0);
272
114
  return PROGRAM_ERROR;
273
115
}
274
116
 
275
 
std::string hexdump(const unsigned char *str, size_t length)
276
 
{
277
 
  static const char hexval[16] = { '0', '1', '2', '3', 
278
 
    '4', '5', '6', '7', 
279
 
    '8', '9', 'a', 'b', 
280
 
    'c', 'd', 'e', 'f' };
281
 
  unsigned max_cols = 16; 
282
 
  std::ostringstream buf;
283
 
  std::ostringstream raw_buf;
284
 
 
285
 
  const unsigned char *e= str + length;
286
 
  for (const unsigned char *i= str; i != e;)
287
 
  {
288
 
    raw_buf.str("");
289
 
    for (unsigned col = 0; col < max_cols; ++col)
290
 
    {
291
 
      if (i != e)
292
 
      {
293
 
        buf << hexval[ ( (*i >> 4) & 0xF ) ]
294
 
          << hexval[ ( *i & 0x0F ) ]
295
 
          << ' ';
296
 
        raw_buf << (isprint(*i) ? *i : '.');
297
 
        ++i;
298
 
      }
299
 
      else
300
 
      {
301
 
        buf << "   ";
302
 
      }
303
 
    }
304
 
  }
305
 
 
306
 
  return buf.str();
307
 
}
308
 
 
309
117
} /* namespace display */
310
118
} /* namespace drizzled */