18
18
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
23
#include <drizzled/error.h>
24
#include <drizzled/function/cast/boolean.h>
25
#include <drizzled/lex_string.h>
26
#include <drizzled/type/boolean.h>
23
#include "drizzled/function/cast/boolean.h"
24
#include "drizzled/error.h"
28
26
namespace drizzled {
29
27
namespace function {
47
45
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);
53
if (res->length() == 1)
55
switch (res->c_ptr()[0])
58
case 't': case 'T': // PG compatibility
59
return evaluate(true, value);
62
case 'f': case 'F': // PG compatibility
63
return evaluate(false, value);
69
else if ((res->length() == 5) and (strcasecmp(res->c_ptr(), "FALSE") == 0))
71
return evaluate(false, value);
73
if ((res->length() == 4) and (strcasecmp(res->c_ptr(), "TRUE") == 0))
75
return evaluate(true, value);
77
else if ((res->length() == 5) and (strcasecmp(res->c_ptr(), "FALSE") == 0))
79
return evaluate(false, value);
81
else if ((res->length() == 3) and (strcasecmp(res->c_ptr(), "YES") == 0))
83
return evaluate(true, value);
85
else if ((res->length() == 2) and (strcasecmp(res->c_ptr(), "NO") == 0))
87
return evaluate(false, value);
90
my_error(ER_INVALID_CAST_TO_BOOLEAN, MYF(0), res->c_ptr());
91
return evaluate(false, value);