1045
/****************************************************************************
1047
****************************************************************************/
1049
int Field_tiny::store(const char *from,uint32_t len, const CHARSET_INFO * const cs)
1054
error= get_int(cs, from, len, &rnd, 255, -128, 127);
1060
int Field_tiny::store(double nr)
1069
set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
1072
else if (nr > 127.0)
1075
set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
1079
*ptr=(char) (int) nr;
1085
int Field_tiny::store(int64_t nr, bool unsigned_val)
1090
if (nr < 0 && unsigned_val)
1091
nr= 256; // Generate overflow
1095
set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
1101
set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
1111
double Field_tiny::val_real(void)
1113
int tmp= (int) ((signed char*) ptr)[0];
1114
return (double) tmp;
1118
int64_t Field_tiny::val_int(void)
1120
int tmp= (int) ((signed char*) ptr)[0];
1121
return (int64_t) tmp;
1125
String *Field_tiny::val_str(String *val_buffer,
1126
String *val_ptr __attribute__((unused)))
1128
const CHARSET_INFO * const cs= &my_charset_bin;
1130
uint32_t mlength=cmax(field_length+1,5*cs->mbmaxlen);
1131
val_buffer->alloc(mlength);
1132
char *to=(char*) val_buffer->ptr();
1134
length= (uint32_t) cs->cset->long10_to_str(cs,to,mlength,-10,
1135
(long) *((signed char*) ptr));
1137
val_buffer->length(length);
1142
bool Field_tiny::send_binary(Protocol *protocol)
1144
return protocol->store_tiny((int64_t) (int8_t) ptr[0]);
1147
int Field_tiny::cmp(const unsigned char *a_ptr, const unsigned char *b_ptr)
1150
a=(signed char) a_ptr[0]; b= (signed char) b_ptr[0];
1152
return (a < b) ? -1 : (a > b) ? 1 : 0;
1155
void Field_tiny::sort_string(unsigned char *to,uint32_t length __attribute__((unused)))
1157
to[0] = (char) (ptr[0] ^ (unsigned char) 128); /* Revers signbit */
1160
void Field_tiny::sql_type(String &res) const
1162
const CHARSET_INFO * const cs=res.charset();
1163
res.length(cs->cset->snprintf(cs,(char*) res.ptr(),res.alloced_length(),
1164
"tinyint(%d)",(int) field_length));
1168
1046
Report "not well formed" or "cannot convert" error
1169
1047
after storing a character string info a field.
1767
1645
f_is_dec(pack_flag)== 0);
1768
1646
case DRIZZLE_TYPE_TINY:
1769
return new Field_tiny(ptr,field_length,null_pos,null_bit,
1770
unireg_check, field_name,
1772
f_is_dec(pack_flag) == 0);
1773
1648
case DRIZZLE_TYPE_LONG:
1774
1649
return new Field_long(ptr,field_length,null_pos,null_bit,
1775
1650
unireg_check, field_name,