76
76
#include "drizzled/field/timestamp.h"
77
77
#include "drizzled/field/datetime.h"
78
78
#include "drizzled/field/varstring.h"
79
#include "drizzled/field/uuid.h"
80
81
#include "drizzled/definition/cache.h"
264
265
case message::Table::Field::BLOB:
265
266
field_type= DRIZZLE_TYPE_BLOB;
268
case message::Table::Field::UUID:
269
field_type= DRIZZLE_TYPE_UUID;
269
273
abort(); // Programming error
1315
1320
case DRIZZLE_TYPE_LONGLONG:
1316
1321
field_length= MAX_BIGINT_WIDTH;
1323
case DRIZZLE_TYPE_UUID:
1324
field_length= field::Uuid::max_string_length();
1318
1326
case DRIZZLE_TYPE_NULL:
1319
1327
abort(); // Programming error
1330
assert(enum_field_types_size == 12);
1322
1332
Field* f= make_field(record + field_offsets[fieldnr] + data_offset,
1324
pfield.constraints().is_nullable(),
1330
MTYP_TYPENR(unireg_type),
1331
((field_type == DRIZZLE_TYPE_ENUM) ?
1332
&intervals[interval_nr++]
1334
getTableProto()->field(fieldnr).name().c_str());
1334
pfield.constraints().is_nullable(),
1340
MTYP_TYPENR(unireg_type),
1341
((field_type == DRIZZLE_TYPE_ENUM) ? &intervals[interval_nr++] : (TYPELIB*) 0),
1342
getTableProto()->field(fieldnr).name().c_str());
1336
1344
field[fieldnr]= f;
1346
// Insert post make_field code here.
1349
case DRIZZLE_TYPE_BLOB:
1350
case DRIZZLE_TYPE_VARCHAR:
1351
case DRIZZLE_TYPE_DOUBLE:
1352
case DRIZZLE_TYPE_DECIMAL:
1353
case DRIZZLE_TYPE_TIMESTAMP:
1354
case DRIZZLE_TYPE_DATETIME:
1355
case DRIZZLE_TYPE_DATE:
1356
case DRIZZLE_TYPE_ENUM:
1357
case DRIZZLE_TYPE_LONG:
1358
case DRIZZLE_TYPE_LONGLONG:
1359
case DRIZZLE_TYPE_NULL:
1360
case DRIZZLE_TYPE_UUID:
1338
1364
// This needs to go, we should be setting the "use" on the field so that
1339
1365
// it does not reference the share/table.
1340
1366
table::Shell temp_table(*this); /* Use this so that BLOB DEFAULT '' works */
1364
1390
return local_error;
1367
else if (f->real_type() == DRIZZLE_TYPE_ENUM &&
1368
(f->flags & NOT_NULL_FLAG))
1393
else if (f->real_type() == DRIZZLE_TYPE_ENUM && (f->flags & NOT_NULL_FLAG))
1370
1395
f->set_notnull();
1371
1396
f->store((int64_t) 1, true);