~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/item/hex_string.cc

  • Committer: lbieber
  • Date: 2010-10-01 13:06:31 UTC
  • mfrom: (1802.2.2 drizzle-bug-651948)
  • mto: This revision was merged to the branch mainline in revision 1805.
  • Revision ID: lbieber@orisndriz08-20101001130631-xubscnhmj7r5dn6g
Merge Andrew - Fix bug 651948 - Index lengths not retrieved using drizzledump

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
3
 *
4
 
 *  Copyright (C) 2008 Sun Microsystems, Inc.
 
4
 *  Copyright (C) 2008 Sun Microsystems
5
5
 *
6
6
 *  This program is free software; you can redistribute it and/or modify
7
7
 *  it under the terms of the GNU General Public License as published by
20
20
#include "config.h"
21
21
 
22
22
#include <drizzled/error.h>
23
 
#include <drizzled/field.h>
 
23
#include <drizzled/item/string.h>
24
24
#include <drizzled/item/hex_string.h>
25
 
#include <drizzled/item/string.h>
26
 
#include <drizzled/type/decimal.h>
27
25
 
28
26
#include <algorithm>
29
27
 
68
66
  // following assert is redundant, because fixed=1 assigned in constructor
69
67
  assert(fixed == 1);
70
68
  char *end= (char*) str_value.ptr()+str_value.length(),
71
 
       *ptr= end - min(str_value.length(), sizeof(int64_t));
 
69
       *ptr= end - min(str_value.length(),(uint32_t)sizeof(int64_t));
72
70
 
73
71
  uint64_t value=0;
74
72
  for (; ptr != end ; ptr++)
77
75
}
78
76
 
79
77
 
80
 
type::Decimal *Item_hex_string::val_decimal(type::Decimal *decimal_value)
 
78
my_decimal *Item_hex_string::val_decimal(my_decimal *decimal_value)
81
79
{
82
80
  // following assert is redundant, because fixed=1 assigned in constructor
83
81
  assert(fixed == 1);
84
82
  uint64_t value= (uint64_t)val_int();
85
 
  int2_class_decimal(E_DEC_FATAL_ERROR, value, true, decimal_value);
 
83
  int2my_decimal(E_DEC_FATAL_ERROR, value, true, decimal_value);
86
84
  return (decimal_value);
87
85
}
88
86
 
118
116
void Item_hex_string::print(String *str, enum_query_type)
119
117
{
120
118
  char *end= (char*) str_value.ptr() + str_value.length(),
121
 
       *ptr= end - min(str_value.length(), sizeof(int64_t));
 
119
       *ptr= end - min(str_value.length(), (uint32_t)sizeof(int64_t));
122
120
  str->append("0x");
123
121
  for (; ptr != end ; ptr++)
124
122
  {