21
21
* @file Implementation of CreateField class
27
#include <drizzled/sql_select.h>
28
#include <drizzled/error.h>
29
#include <drizzled/field.h>
30
#include <drizzled/create_field.h>
31
#include <drizzled/field/str.h>
32
#include <drizzled/field/num.h>
33
#include <drizzled/field/blob.h>
34
#include <drizzled/field/boolean.h>
35
#include <drizzled/field/enum.h>
36
#include <drizzled/field/null.h>
37
#include <drizzled/field/date.h>
38
#include <drizzled/field/decimal.h>
39
#include <drizzled/field/real.h>
40
#include <drizzled/field/double.h>
41
#include <drizzled/field/int32.h>
42
#include <drizzled/field/int64.h>
43
#include <drizzled/field/num.h>
44
#include <drizzled/field/epoch.h>
45
#include <drizzled/field/datetime.h>
46
#include <drizzled/field/varstring.h>
47
#include <drizzled/field/uuid.h>
48
#include <drizzled/temporal.h>
49
#include <drizzled/item/string.h>
50
#include <drizzled/table.h>
27
#include "drizzled/sql_select.h"
28
#include "drizzled/error.h"
29
#include "drizzled/field.h"
30
#include "drizzled/create_field.h"
31
#include "drizzled/field/str.h"
32
#include "drizzled/field/num.h"
33
#include "drizzled/field/blob.h"
34
#include "drizzled/field/boolean.h"
35
#include "drizzled/field/enum.h"
36
#include "drizzled/field/null.h"
37
#include "drizzled/field/date.h"
38
#include "drizzled/field/decimal.h"
39
#include "drizzled/field/real.h"
40
#include "drizzled/field/double.h"
41
#include "drizzled/field/int32.h"
42
#include "drizzled/field/int64.h"
43
#include "drizzled/field/num.h"
44
#include "drizzled/field/epoch.h"
45
#include "drizzled/field/datetime.h"
46
#include "drizzled/field/varstring.h"
47
#include "drizzled/field/uuid.h"
48
#include "drizzled/temporal.h"
49
#include "drizzled/item/string.h"
52
#include <drizzled/display.h>
51
#include "drizzled/display.h"
54
53
#include <algorithm>
105
102
if (!(flags & (NO_DEFAULT_VALUE_FLAG)) &&
106
103
!(flags & AUTO_INCREMENT_FLAG) &&
107
104
old_field->ptr && orig_field &&
108
(not old_field->is_timestamp() || /* set def only if */
105
(sql_type != DRIZZLE_TYPE_TIMESTAMP || /* set def only if */
109
106
old_field->getTable()->timestamp_field != old_field || /* timestamp field */
110
107
unireg_check == Field::TIMESTAMP_UN_FIELD)) /* has default val */
230
227
it is NOT NULL, not an AUTO_INCREMENT field and not a TIMESTAMP.
232
229
if (!fld_default_value && !(fld_type_modifier & AUTO_INCREMENT_FLAG) &&
233
(fld_type_modifier & NOT_NULL_FLAG) && (fld_type != DRIZZLE_TYPE_TIMESTAMP and fld_type != DRIZZLE_TYPE_MICROTIME))
230
(fld_type_modifier & NOT_NULL_FLAG) && fld_type != DRIZZLE_TYPE_TIMESTAMP)
235
231
flags|= NO_DEFAULT_VALUE_FLAG;
238
233
if (fld_length && !(length= (uint32_t) atoi(fld_length)))
308
case DRIZZLE_TYPE_MICROTIME:
310
This assert() should be correct due to absence of length
311
specifiers for timestamp. Previous manipulation also wasn't
312
ever called (from examining lcov)
315
303
case DRIZZLE_TYPE_TIMESTAMP:
316
length= MicroTimestamp::MAX_STRING_LENGTH;
306
length= DateTime::MAX_STRING_LENGTH;
309
/* This assert() should be correct due to absence of length
310
specifiers for timestamp. Previous manipulation also wasn't
311
ever called (from examining lcov)
313
assert(length == (uint32_t)DateTime::MAX_STRING_LENGTH);
315
flags|= UNSIGNED_FLAG;
318
316
if (fld_default_value)
320
318
/* Grammar allows only NOW() value for ON UPDATE clause */