23 #include <drizzled/field/int32.h>
24 #include <drizzled/error.h>
25 #include <drizzled/table.h>
26 #include <drizzled/session.h>
41 int Int32::store(
const char *from,uint32_t len,
const charset_info_st *
const cs)
43 ASSERT_COLUMN_MARKED_FOR_WRITE;
45 int error= get_int(cs, from, len, &rnd, UINT32_MAX, INT32_MIN, INT32_MAX);
46 long store_tmp= (long) rnd;
47 longstore(ptr, store_tmp);
52 int Int32::store(
double nr)
58 ASSERT_COLUMN_MARKED_FOR_WRITE;
60 if (nr < (
double) INT32_MIN)
62 res=(int32_t) INT32_MIN;
65 else if (nr > (
double) INT32_MAX)
67 res=(int32_t) INT32_MAX;
71 res=(int32_t) (int64_t) nr;
74 set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
82 int Int32::store(int64_t nr,
bool unsigned_val)
87 ASSERT_COLUMN_MARKED_FOR_WRITE;
89 if (nr < 0 && unsigned_val)
90 nr= ((int64_t) INT32_MAX) + 1;
92 if (nr < (int64_t) INT32_MIN)
94 res=(int32_t) INT32_MIN;
97 else if (nr > (int64_t) INT32_MAX)
99 res=(int32_t) INT32_MAX;
108 set_warning(DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
116 double Int32::val_real(
void)
const
120 ASSERT_COLUMN_MARKED_FOR_READ;
127 int64_t Int32::val_int(
void)
const
131 ASSERT_COLUMN_MARKED_FOR_READ;
138 String *Int32::val_str(String *val_buffer, String *)
const
140 const charset_info_st *
const cs= &my_charset_bin;
142 uint32_t mlength= max(field_length+1,12*cs->mbmaxlen);
143 val_buffer->alloc(mlength);
144 char *to=(
char*) val_buffer->ptr();
147 ASSERT_COLUMN_MARKED_FOR_READ;
151 length=cs->cset->long10_to_str(cs,to,mlength,-10,(
long) j);
152 val_buffer->length(length);
157 int Int32::cmp(
const unsigned char *a_ptr,
const unsigned char *b_ptr)
164 return (a < b) ? -1 : (a > b) ? 1 : 0;
167 void Int32::sort_string(
unsigned char *to,uint32_t )
169 #ifdef WORDS_BIGENDIAN
171 to[0] = (char) (ptr[0] ^ 128);
178 to[0] = (char) (ptr[3] ^ 128);
187 unsigned char *Int32::pack(
unsigned char* to,
const unsigned char *from, uint32_t,
bool)
193 return to +
sizeof(val);
197 const unsigned char *Int32::unpack(
unsigned char* to,
const unsigned char *from, uint32_t,
bool)
204 return from +
sizeof(val);