2141
2141
item_result_type(STRING_RESULT),
2142
2142
/* Don't pretend to be a literal unless value for this item is set. */
2143
2143
item_type(PARAM_ITEM),
2144
param_type(FIELD_TYPE_VARCHAR),
2144
param_type(DRIZZLE_TYPE_VARCHAR),
2145
2145
pos_in_query(pos_in_query_arg),
2146
2146
set_param_func(default_set_param_func),
2147
2147
limit_clause_param(false)
3971
3971
switch (result_type()) {
3972
3972
case STRING_RESULT: return string_field_type();
3973
case INT_RESULT: return FIELD_TYPE_LONGLONG;
3974
case DECIMAL_RESULT: return FIELD_TYPE_NEWDECIMAL;
3975
case REAL_RESULT: return FIELD_TYPE_DOUBLE;
3973
case INT_RESULT: return DRIZZLE_TYPE_LONGLONG;
3974
case DECIMAL_RESULT: return DRIZZLE_TYPE_NEWDECIMAL;
3975
case REAL_RESULT: return DRIZZLE_TYPE_DOUBLE;
3976
3976
case ROW_RESULT:
3979
return FIELD_TYPE_VARCHAR;
3979
return DRIZZLE_TYPE_VARCHAR;
4092
4092
collation.collation);
4093
4093
/* Item_type_holder holds the exact type, do not change it */
4094
4094
else if (max_length > 0 &&
4095
(type() != Item::TYPE_HOLDER || field_type() != FIELD_TYPE_STRING))
4095
(type() != Item::TYPE_HOLDER || field_type() != DRIZZLE_TYPE_STRING))
4096
4096
field= new Field_varstring(max_length, maybe_null, name, table->s,
4097
4097
collation.collation);
4127
4127
switch (field_type()) {
4128
case FIELD_TYPE_NEWDECIMAL:
4128
case DRIZZLE_TYPE_NEWDECIMAL:
4129
4129
field= new Field_new_decimal((uchar*) 0, max_length, null_ptr, 0,
4130
4130
Field::NONE, name, decimals, 0,
4131
4131
unsigned_flag);
4133
case FIELD_TYPE_TINY:
4133
case DRIZZLE_TYPE_TINY:
4134
4134
field= new Field_tiny((uchar*) 0, max_length, null_ptr, 0, Field::NONE,
4135
4135
name, 0, unsigned_flag);
4137
case FIELD_TYPE_SHORT:
4137
case DRIZZLE_TYPE_SHORT:
4138
4138
field= new Field_short((uchar*) 0, max_length, null_ptr, 0, Field::NONE,
4139
4139
name, 0, unsigned_flag);
4141
case FIELD_TYPE_LONG:
4141
case DRIZZLE_TYPE_LONG:
4142
4142
field= new Field_long((uchar*) 0, max_length, null_ptr, 0, Field::NONE,
4143
4143
name, 0, unsigned_flag);
4145
case FIELD_TYPE_LONGLONG:
4145
case DRIZZLE_TYPE_LONGLONG:
4146
4146
field= new Field_int64_t((uchar*) 0, max_length, null_ptr, 0, Field::NONE,
4147
4147
name, 0, unsigned_flag);
4149
case FIELD_TYPE_DOUBLE:
4149
case DRIZZLE_TYPE_DOUBLE:
4150
4150
field= new Field_double((uchar*) 0, max_length, null_ptr, 0, Field::NONE,
4151
4151
name, decimals, 0, unsigned_flag);
4153
case FIELD_TYPE_NULL:
4153
case DRIZZLE_TYPE_NULL:
4154
4154
field= new Field_null((uchar*) 0, max_length, Field::NONE,
4155
4155
name, &my_charset_bin);
4157
case FIELD_TYPE_NEWDATE:
4157
case DRIZZLE_TYPE_NEWDATE:
4158
4158
field= new Field_newdate(maybe_null, name, &my_charset_bin);
4160
case FIELD_TYPE_TIME:
4160
case DRIZZLE_TYPE_TIME:
4161
4161
field= new Field_time(maybe_null, name, &my_charset_bin);
4163
case FIELD_TYPE_TIMESTAMP:
4163
case DRIZZLE_TYPE_TIMESTAMP:
4164
4164
field= new Field_timestamp(maybe_null, name, &my_charset_bin);
4166
case FIELD_TYPE_DATETIME:
4166
case DRIZZLE_TYPE_DATETIME:
4167
4167
field= new Field_datetime(maybe_null, name, &my_charset_bin);
4169
case FIELD_TYPE_YEAR:
4169
case DRIZZLE_TYPE_YEAR:
4170
4170
field= new Field_year((uchar*) 0, max_length, null_ptr, 0, Field::NONE,
4174
4174
/* This case should never be chosen */
4176
4176
/* If something goes awfully wrong, it's better to get a string than die */
4177
case FIELD_TYPE_STRING:
4177
case DRIZZLE_TYPE_STRING:
4178
4178
if (fixed_length && max_length < CONVERT_IF_BIGGER_TO_BLOB)
4180
4180
field= new Field_string(max_length, maybe_null, name,
4184
4184
/* Fall through to make_string_field() */
4185
case FIELD_TYPE_ENUM:
4186
case FIELD_TYPE_SET:
4187
case FIELD_TYPE_VAR_STRING:
4188
case FIELD_TYPE_VARCHAR:
4185
case DRIZZLE_TYPE_ENUM:
4186
case DRIZZLE_TYPE_SET:
4187
case DRIZZLE_TYPE_VAR_STRING:
4188
case DRIZZLE_TYPE_VARCHAR:
4189
4189
return make_string_field(table);
4190
case FIELD_TYPE_BLOB:
4190
case DRIZZLE_TYPE_BLOB:
4191
4191
if (this->type() == Item::TYPE_HOLDER)
4192
4192
field= new Field_blob(max_length, maybe_null, name, collation.collation,
4707
4707
switch ((f_type=field_type())) {
4709
case FIELD_TYPE_NULL:
4710
case FIELD_TYPE_ENUM:
4711
case FIELD_TYPE_SET:
4712
case FIELD_TYPE_BLOB:
4713
case FIELD_TYPE_STRING:
4714
case FIELD_TYPE_VAR_STRING:
4715
case FIELD_TYPE_VARCHAR:
4716
case FIELD_TYPE_NEWDECIMAL:
4709
case DRIZZLE_TYPE_NULL:
4710
case DRIZZLE_TYPE_ENUM:
4711
case DRIZZLE_TYPE_SET:
4712
case DRIZZLE_TYPE_BLOB:
4713
case DRIZZLE_TYPE_STRING:
4714
case DRIZZLE_TYPE_VAR_STRING:
4715
case DRIZZLE_TYPE_VARCHAR:
4716
case DRIZZLE_TYPE_NEWDECIMAL:
4719
4719
if ((res=val_str(buffer)))
4720
4720
result= protocol->store(res->ptr(),res->length(),res->charset());
4723
case FIELD_TYPE_TINY:
4723
case DRIZZLE_TYPE_TINY:
4753
4753
result= protocol->store_int64_t(nr, unsigned_flag);
4756
case FIELD_TYPE_DOUBLE:
4756
case DRIZZLE_TYPE_DOUBLE:
4758
4758
double nr= val_real();
4759
4759
if (!null_value)
4760
4760
result= protocol->store(nr, decimals, buffer);
4763
case FIELD_TYPE_DATETIME:
4764
case FIELD_TYPE_TIMESTAMP:
4763
case DRIZZLE_TYPE_DATETIME:
4764
case DRIZZLE_TYPE_TIMESTAMP:
4767
4767
get_date(&tm, TIME_FUZZY_DATE);
4768
4768
if (!null_value)
4770
if (f_type == FIELD_TYPE_NEWDATE)
4770
if (f_type == DRIZZLE_TYPE_NEWDATE)
4771
4771
return protocol->store_date(&tm);
4773
4773
result= protocol->store(&tm);
4777
case FIELD_TYPE_TIME:
4777
case DRIZZLE_TYPE_TIME:
6112
6112
int Item_cache_str::save_in_field(Field *field, bool no_conversions)
6114
6114
int res= Item_cache::save_in_field(field, no_conversions);
6115
return (is_varbinary && field->type() == FIELD_TYPE_STRING &&
6115
return (is_varbinary && field->type() == DRIZZLE_TYPE_STRING &&
6116
6116
value->length() < field->field_length) ? 1 : res;
6249
6249
Field *field= ((Item_field *) item)->field;
6250
6250
enum_field_types type= field->real_type();
6251
6251
if (field->is_created_from_null_item)
6252
return FIELD_TYPE_NULL;
6252
return DRIZZLE_TYPE_NULL;
6253
6253
/* work around about varchar type field detection */
6254
if (type == FIELD_TYPE_STRING && field->type() == FIELD_TYPE_VAR_STRING)
6255
return FIELD_TYPE_VAR_STRING;
6254
if (type == DRIZZLE_TYPE_STRING && field->type() == DRIZZLE_TYPE_VAR_STRING)
6255
return DRIZZLE_TYPE_VAR_STRING;
6258
6258
case SUM_FUNC_ITEM:
6278
6278
switch (item->result_type()) {
6279
6279
case STRING_RESULT:
6280
return FIELD_TYPE_VAR_STRING;
6280
return DRIZZLE_TYPE_VAR_STRING;
6281
6281
case INT_RESULT:
6282
return FIELD_TYPE_LONGLONG;
6282
return DRIZZLE_TYPE_LONGLONG;
6283
6283
case REAL_RESULT:
6284
return FIELD_TYPE_DOUBLE;
6284
return DRIZZLE_TYPE_DOUBLE;
6285
6285
case DECIMAL_RESULT:
6286
return FIELD_TYPE_NEWDECIMAL;
6286
return DRIZZLE_TYPE_NEWDECIMAL;
6287
6287
case ROW_RESULT:
6290
return FIELD_TYPE_VAR_STRING;
6290
return DRIZZLE_TYPE_VAR_STRING;
6411
6411
switch (item->field_type())
6413
case FIELD_TYPE_TIMESTAMP:
6414
case FIELD_TYPE_TIME:
6415
case FIELD_TYPE_DATETIME:
6416
case FIELD_TYPE_YEAR:
6417
case FIELD_TYPE_NEWDATE:
6418
case FIELD_TYPE_VARCHAR:
6419
case FIELD_TYPE_NEWDECIMAL:
6420
case FIELD_TYPE_ENUM:
6421
case FIELD_TYPE_SET:
6422
case FIELD_TYPE_BLOB:
6423
case FIELD_TYPE_VAR_STRING:
6424
case FIELD_TYPE_STRING:
6425
case FIELD_TYPE_TINY:
6413
case DRIZZLE_TYPE_TIMESTAMP:
6414
case DRIZZLE_TYPE_TIME:
6415
case DRIZZLE_TYPE_DATETIME:
6416
case DRIZZLE_TYPE_YEAR:
6417
case DRIZZLE_TYPE_NEWDATE:
6418
case DRIZZLE_TYPE_VARCHAR:
6419
case DRIZZLE_TYPE_NEWDECIMAL:
6420
case DRIZZLE_TYPE_ENUM:
6421
case DRIZZLE_TYPE_SET:
6422
case DRIZZLE_TYPE_BLOB:
6423
case DRIZZLE_TYPE_VAR_STRING:
6424
case DRIZZLE_TYPE_STRING:
6425
case DRIZZLE_TYPE_TINY:
6427
case FIELD_TYPE_SHORT:
6427
case DRIZZLE_TYPE_SHORT:
6429
case FIELD_TYPE_LONG:
6429
case DRIZZLE_TYPE_LONG:
6430
6430
return MY_INT32_NUM_DECIMAL_DIGITS;
6431
case FIELD_TYPE_DOUBLE:
6431
case DRIZZLE_TYPE_DOUBLE:
6433
case FIELD_TYPE_NULL:
6433
case DRIZZLE_TYPE_NULL:
6435
case FIELD_TYPE_LONGLONG:
6435
case DRIZZLE_TYPE_LONGLONG:
6438
6438
assert(0); // we should never go there
6496
6496
void Item_type_holder::get_full_info(Item *item)
6498
if (fld_type == FIELD_TYPE_ENUM ||
6499
fld_type == FIELD_TYPE_SET)
6498
if (fld_type == DRIZZLE_TYPE_ENUM ||
6499
fld_type == DRIZZLE_TYPE_SET)
6501
6501
if (item->type() == Item::SUM_FUNC_ITEM &&
6502
6502
(((Item_sum*)item)->sum_func() == Item_sum::MAX_FUNC ||
6507
6507
field (or MIN|MAX(enum|set field)) and number of NULL fields
6509
6509
assert((enum_set_typelib &&
6510
get_real_type(item) == FIELD_TYPE_NULL) ||
6510
get_real_type(item) == DRIZZLE_TYPE_NULL) ||
6511
6511
(!enum_set_typelib &&
6512
6512
item->type() == Item::FIELD_ITEM &&
6513
(get_real_type(item) == FIELD_TYPE_ENUM ||
6514
get_real_type(item) == FIELD_TYPE_SET) &&
6513
(get_real_type(item) == DRIZZLE_TYPE_ENUM ||
6514
get_real_type(item) == DRIZZLE_TYPE_SET) &&
6515
6515
((Field_enum*)((Item_field *) item)->field)->typelib));
6516
6516
if (!enum_set_typelib)