~mordred/drizzle/merge-pandora-build

« back to all changes in this revision

Viewing changes to drizzled/item.cc

  • Committer: Brian Aker
  • Date: 2010-12-20 19:24:24 UTC
  • mfrom: (2008.2.5 integer-refactor)
  • Revision ID: brian@tangent.org-20101220192424-iyccxsagvuw43kaz
A rather large and tasty cleanup of issues around ints, and one additional
fix for alter table.

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
#include "drizzled/field/null.h"
40
40
#include "drizzled/field/date.h"
41
41
#include "drizzled/field/decimal.h"
42
 
#include "drizzled/field/real.h"
43
42
#include "drizzled/field/double.h"
44
43
#include "drizzled/field/int32.h"
45
44
#include "drizzled/field/int64.h"
46
 
#include "drizzled/field/num.h"
 
45
#include "drizzled/field/real.h"
 
46
#include "drizzled/field/size.h"
47
47
#include "drizzled/field/timestamp.h"
48
48
#include "drizzled/field/datetime.h"
49
49
#include "drizzled/field/varstring.h"
 
50
 
50
51
#include "drizzled/internal/m_string.h"
51
52
 
52
53
#include <cstdio>
1007
1008
}
1008
1009
 
1009
1010
void Item::init_make_field(SendField *tmp_field,
1010
 
                           enum enum_field_types field_type_arg)
 
1011
                           enum enum_field_types field_type_arg)
1011
1012
{
1012
1013
  char *empty_name= (char*) "";
1013
1014
  tmp_field->db_name=   empty_name;
1592
1593
      Values with MY_INT32_NUM_DECIMAL_DIGITS digits may or may not fit into
1593
1594
      Int32 -> make them field::Int64.
1594
1595
    */
1595
 
    if (item->max_length >= (MY_INT32_NUM_DECIMAL_DIGITS - 1))
1596
 
      new_field=new field::Int64(item->max_length, maybe_null,
1597
 
                                 item->name, item->unsigned_flag);
 
1596
    if (item->unsigned_flag)
 
1597
    {
 
1598
      new_field= new field::Size(item->max_length, maybe_null,
 
1599
                                  item->name, item->unsigned_flag);
 
1600
    }
 
1601
    else if (item->max_length >= (MY_INT32_NUM_DECIMAL_DIGITS - 1))
 
1602
    {
 
1603
      new_field= new field::Int64(item->max_length, maybe_null,
 
1604
                                  item->name, item->unsigned_flag);
 
1605
    }
1598
1606
    else
1599
 
      new_field=new field::Int32(item->max_length, maybe_null,
1600
 
                                 item->name, item->unsigned_flag);
 
1607
    {
 
1608
      new_field= new field::Int32(item->max_length, maybe_null,
 
1609
                                  item->name, item->unsigned_flag);
 
1610
    }
 
1611
 
1601
1612
    break;
1602
1613
 
1603
1614
  case STRING_RESULT: