~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/definition/table.cc

Merge with trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
73
73
#include "drizzled/field/int32.h"
74
74
#include "drizzled/field/int64.h"
75
75
#include "drizzled/field/num.h"
76
 
#include "drizzled/field/timestamp.h"
 
76
#include "drizzled/field/time.h"
 
77
#include "drizzled/field/epoch.h"
77
78
#include "drizzled/field/datetime.h"
78
79
#include "drizzled/field/varstring.h"
79
80
#include "drizzled/field/uuid.h"
241
242
  case message::Table::Field::DOUBLE:
242
243
    field_type= DRIZZLE_TYPE_DOUBLE;
243
244
    break;
244
 
  case message::Table::Field::TIMESTAMP:
 
245
  case message::Table::Field::EPOCH:
245
246
    field_type= DRIZZLE_TYPE_TIMESTAMP;
246
247
    break;
247
248
  case message::Table::Field::BIGINT:
268
269
  case message::Table::Field::UUID:
269
270
    field_type= DRIZZLE_TYPE_UUID;
270
271
    break;
 
272
  case message::Table::Field::TIME:
 
273
    field_type= DRIZZLE_TYPE_TIME;
 
274
    break;
271
275
  default:
272
276
    assert(0);
273
277
    abort(); // Programming error
308
312
    abort();
309
313
  case DRIZZLE_TYPE_TIMESTAMP:
310
314
  case DRIZZLE_TYPE_DATETIME:
 
315
  case DRIZZLE_TYPE_TIME:
311
316
  case DRIZZLE_TYPE_DATE:
312
317
  case DRIZZLE_TYPE_ENUM:
313
318
  case DRIZZLE_TYPE_UUID:
1235
1240
 
1236
1241
    uint32_t field_length= 0; //Assignment is for compiler complaint.
1237
1242
 
 
1243
    // We set field_length in this loop.
1238
1244
    switch (field_type)
1239
1245
    {
1240
1246
    case DRIZZLE_TYPE_BLOB:
1280
1286
                                                     false);
1281
1287
        break;
1282
1288
      }
1283
 
    case DRIZZLE_TYPE_TIMESTAMP:
1284
1289
    case DRIZZLE_TYPE_DATETIME:
1285
1290
      field_length= DateTime::MAX_STRING_LENGTH;
1286
1291
      break;
1318
1323
    case DRIZZLE_TYPE_UUID:
1319
1324
      field_length= field::Uuid::max_string_length();
1320
1325
      break;
 
1326
    case DRIZZLE_TYPE_TIMESTAMP:
 
1327
      field_length= field::Epoch::max_string_length();
 
1328
      break;
 
1329
    case DRIZZLE_TYPE_TIME:
 
1330
      field_length= field::Epoch::max_string_length();
 
1331
      break;
1321
1332
    case DRIZZLE_TYPE_NULL:
1322
1333
      abort(); // Programming error
1323
1334
    }
1324
1335
 
1325
 
    assert(enum_field_types_size == 12);
 
1336
    assert(enum_field_types_size == 13);
1326
1337
 
1327
1338
    Field* f= make_field(record + field_offsets[fieldnr] + data_offset,
1328
1339
                         field_length,
1346
1357
    case DRIZZLE_TYPE_DOUBLE:
1347
1358
    case DRIZZLE_TYPE_DECIMAL:
1348
1359
    case DRIZZLE_TYPE_TIMESTAMP:
 
1360
    case DRIZZLE_TYPE_TIME:
1349
1361
    case DRIZZLE_TYPE_DATETIME:
1350
1362
    case DRIZZLE_TYPE_DATE:
1351
1363
    case DRIZZLE_TYPE_ENUM:
1845
1857
    outparam.found_next_number_field=
1846
1858
      outparam.getField(positionFields(found_next_number_field));
1847
1859
  if (timestamp_field)
1848
 
    outparam.timestamp_field= (Field_timestamp*) outparam.getField(timestamp_field->position());
 
1860
    outparam.timestamp_field= (field::Epoch*) outparam.getField(timestamp_field->position());
1849
1861
 
1850
1862
  /* Fix key->name and key_part->field */
1851
1863
  if (key_parts)
2046
2058
  {
2047
2059
  case DRIZZLE_TYPE_ENUM:
2048
2060
    return new (&mem_root) Field_enum(ptr,
2049
 
                                 field_length,
2050
 
                                 null_pos,
2051
 
                                 null_bit,
2052
 
                                 field_name,
2053
 
                                 interval,
2054
 
                                 field_charset);
 
2061
                                      field_length,
 
2062
                                      null_pos,
 
2063
                                      null_bit,
 
2064
                                      field_name,
 
2065
                                      interval,
 
2066
                                      field_charset);
2055
2067
  case DRIZZLE_TYPE_VARCHAR:
2056
2068
    setVariableWidth();
2057
2069
    return new (&mem_root) Field_varstring(ptr,field_length,
2107
2119
                                        unireg_check,
2108
2120
                                        field_name);
2109
2121
  case DRIZZLE_TYPE_TIMESTAMP:
2110
 
    return new (&mem_root) Field_timestamp(ptr,
2111
 
                                      field_length,
2112
 
                                      null_pos,
2113
 
                                      null_bit,
2114
 
                                      unireg_check,
2115
 
                                      field_name,
2116
 
                                      this,
2117
 
                                      field_charset);
 
2122
    return new (&mem_root) field::Epoch(ptr,
 
2123
                                        field_length,
 
2124
                                        null_pos,
 
2125
                                        null_bit,
 
2126
                                        unireg_check,
 
2127
                                        field_name,
 
2128
                                        this,
 
2129
                                        field_charset);
 
2130
  case DRIZZLE_TYPE_TIME:
 
2131
    return new (&mem_root) field::Time(ptr,
 
2132
                                       field_length,
 
2133
                                       null_pos,
 
2134
                                       null_bit,
 
2135
                                       field_name,
 
2136
                                       field_charset);
2118
2137
  case DRIZZLE_TYPE_DATE:
2119
2138
    return new (&mem_root) Field_date(ptr,
2120
2139
                                 null_pos,