00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <config.h>
00022
00023 #include <drizzled/session.h>
00024 #include <plugin/string_functions/functions.h>
00025
00026 namespace drizzled
00027 {
00028 namespace string_functions
00029 {
00030
00031 bool Regex::val_bool()
00032 {
00033 drizzled::String *res= args[0]->val_str(&_res);
00034
00035 if (re.empty())
00036 {
00037 drizzled::String _regex;
00038 drizzled::String *regex= args[1]->val_str(&_regex);
00039
00040 if (not regex or not regex->length() or not res or not res->length())
00041 {
00042 null_value= true;
00043 return false;
00044 }
00045
00046 re.assign(regex->c_str());
00047 }
00048
00049 if (not res or not res->length())
00050 {
00051 null_value= true;
00052 return false;
00053 }
00054
00055 null_value= false;
00056
00057 if (is_negative)
00058 return not boost::regex_match(res->c_str(), re);
00059
00060 return boost::regex_match(res->c_str(), re);
00061 }
00062
00063 }
00064 }