23 #include <drizzled/error.h>
24 #include <drizzled/function/cast/boolean.h>
25 #include <drizzled/lex_string.h>
26 #include <drizzled/type/boolean.h>
34 str->append(STRING_WITH_LEN(
"cast("));
36 str->append(STRING_WITH_LEN(
" as boolean)"));
41 switch (args[0]->result_type())
47 if (not (res= args[0]->
val_str(&_res)))
55 if (not type::convert(result, *res))
57 my_error(ER_INVALID_CAST_TO_BOOLEAN, MYF(0), res->c_ptr());
60 return evaluate(result, value);
71 return evaluate(tmp, value);
76 return evaluate(
false, value);
79 String *Boolean::evaluate(
const bool &result,
String *val_buffer)
81 val_buffer->alloc(5 * my_charset_bin.mbmaxlen);
82 char *buffer= val_buffer->c_ptr();
86 memcpy(buffer,
"TRUE", 4);
87 val_buffer->length(4);
91 memcpy(buffer,
"FALSE", 5);
92 val_buffer->length(5);
TODO: Rename this file - func.h is stupid.
virtual void print(String *str)
virtual void print(String *str)
drizzled::String * val_str(drizzled::String *value)