~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/create_field.cc

  • Committer: Patrick Crews
  • Date: 2010-07-19 22:50:20 UTC
  • mto: (1663.1.2 rollup)
  • mto: This revision was merged to the branch mainline in revision 1664.
  • Revision ID: gleebix@gmail.com-20100719225020-6lhrjnkq3k9lyq0f
Fix of optimizer.test - needed cleanup at the end + updated .result file

Show diffs side-by-side

added added

removed removed

Lines of Context:
37
37
#include "drizzled/field/decimal.h"
38
38
#include "drizzled/field/real.h"
39
39
#include "drizzled/field/double.h"
40
 
#include "drizzled/field/int32.h"
41
 
#include "drizzled/field/int64.h"
 
40
#include "drizzled/field/long.h"
 
41
#include "drizzled/field/int64_t.h"
42
42
#include "drizzled/field/num.h"
43
43
#include "drizzled/field/timestamp.h"
44
44
#include "drizzled/field/datetime.h"
45
45
#include "drizzled/field/varstring.h"
46
 
#include "drizzled/field/uuid.h"
47
46
#include "drizzled/temporal.h"
48
 
#include "drizzled/item/string.h"
49
47
 
50
48
#include <algorithm>
51
49
 
96
94
  def= 0;
97
95
  char_length= length;
98
96
 
99
 
  if (!(flags & (NO_DEFAULT_VALUE_FLAG)) &&
100
 
      !(flags & AUTO_INCREMENT_FLAG) &&
 
97
  if (!(flags & (NO_DEFAULT_VALUE_FLAG )) &&
101
98
      old_field->ptr && orig_field &&
102
99
      (sql_type != DRIZZLE_TYPE_TIMESTAMP ||                /* set def only if */
103
100
       old_field->getTable()->timestamp_field != old_field ||  /* timestamp field */
106
103
    ptrdiff_t diff;
107
104
 
108
105
    /* Get the value from default_values */
109
 
    diff= (ptrdiff_t) (orig_field->getTable()->getDefaultValues() - orig_field->getTable()->getInsertRecord());
 
106
    diff= (ptrdiff_t) (orig_field->getTable()->getDefaultValues() - orig_field->getTable()->record[0]);
110
107
    orig_field->move_field_offset(diff);        // Points now at default_values
111
108
    if (! orig_field->is_real_null())
112
109
    {
113
110
      char buff[MAX_FIELD_WIDTH], *pos;
114
111
      String tmp(buff, sizeof(buff), charset), *res;
115
 
      res= orig_field->val_str_internal(&tmp);
 
112
      res= orig_field->val_str(&tmp);
116
113
      pos= (char*) memory::sql_strmake(res->ptr(), res->length());
117
114
      def= new Item_string(pos, res->length(), charset);
118
115
    }
119
 
    orig_field->move_field_offset(-diff);       // Back to getInsertRecord()
 
116
    orig_field->move_field_offset(-diff);       // Back to record[0]
120
117
  }
121
118
}
122
119
 
351
348
    case DRIZZLE_TYPE_DATE:
352
349
      length= Date::MAX_STRING_LENGTH;
353
350
      break;
354
 
    case DRIZZLE_TYPE_UUID:
355
 
      length= field::Uuid::max_string_length();
356
 
      break;
357
351
    case DRIZZLE_TYPE_DATETIME:
358
352
      length= DateTime::MAX_STRING_LENGTH;
359
353
      break;
360
354
    case DRIZZLE_TYPE_ENUM:
361
355
      {
362
356
        /* Should be safe. */
363
 
        pack_length= 4;
 
357
        pack_length= get_enum_pack_length(fld_interval_list->elements);
364
358
 
365
359
        List_iterator<String> it(*fld_interval_list);
366
360
        String *tmp;