~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/create_field.cc

  • Committer: Brian Aker
  • Date: 2010-06-21 22:16:28 UTC
  • mto: This revision was merged to the branch mainline in revision 1635.
  • Revision ID: brian@gaz-20100621221628-tnd8du7u2ubhheof
More current_session issues.

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
 
71
69
 
72
70
  /* Fix if the original table had 4 byte pointer blobs */
73
71
  if (flags & BLOB_FLAG)
74
 
    pack_length= (pack_length - old_field->getTable()->getShare()->blob_ptr_size + portable_sizeof_char_ptr);
 
72
    pack_length= (pack_length - old_field->table->getShare()->blob_ptr_size + portable_sizeof_char_ptr);
75
73
 
76
74
  switch (sql_type) 
77
75
  {
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
 
       old_field->getTable()->timestamp_field != old_field ||  /* timestamp field */
 
100
       old_field->table->timestamp_field != old_field ||  /* timestamp field */
104
101
       unireg_check == Field::TIMESTAMP_UN_FIELD))        /* has default val */
105
102
  {
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->table->getDefaultValues() - orig_field->table->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;