24 #include <drizzled/field/boolean.h>
25 #include <drizzled/type/boolean.h>
26 #include <drizzled/error.h>
27 #include <drizzled/internal/my_sys.h>
28 #include <drizzled/session.h>
29 #include <drizzled/table.h>
35 Boolean::Boolean(
unsigned char *ptr_arg,
37 unsigned char *null_ptr_arg,
38 unsigned char null_bit_arg,
39 const char *field_name_arg,
40 bool ansi_display_arg) :
41 Field(ptr_arg, len_arg,
46 ansi_display(ansi_display_arg)
49 flags|= UNSIGNED_FLAG;
52 int Boolean::cmp(
const unsigned char *a,
const unsigned char *b)
54 return memcmp(a, b,
sizeof(
unsigned char));
57 int Boolean::store(
const char *from, uint32_t length,
const charset_info_st *
const )
59 ASSERT_COLUMN_MARKED_FOR_WRITE;
62 if (not type::convert(result, from, length))
64 my_error(ER_INVALID_BOOLEAN_VALUE, MYF(0), from);
71 int Boolean::store(int64_t nr,
bool)
73 ASSERT_COLUMN_MARKED_FOR_WRITE;
78 int Boolean::store(
double nr)
80 ASSERT_COLUMN_MARKED_FOR_WRITE;
87 ASSERT_COLUMN_MARKED_FOR_WRITE;
88 set(not dec->isZero());
92 double Boolean::val_real()
const
94 ASSERT_COLUMN_MARKED_FOR_READ;
98 int64_t Boolean::val_int()
const
100 ASSERT_COLUMN_MARKED_FOR_READ;
104 String *Boolean::val_str(String *val_buffer, String *)
const
106 ASSERT_COLUMN_MARKED_FOR_READ;
107 type::convert(*val_buffer, isTrue(), ansi_display);
111 type::Decimal *Boolean::val_decimal(type::Decimal *dec)
const
115 int2_class_decimal(E_DEC_OK, 1,
false, dec);
122 void Boolean::sort_string(
unsigned char *to, uint32_t length_arg)
124 memcpy(to, ptr, length_arg);