Commit b3e31308 authored by unknown's avatar unknown

Extend String class with CHARSET_INFO field

parent de1e5113
...@@ -1279,7 +1279,7 @@ Item_func_regex::fix_fields(THD *thd,TABLE_LIST *tables) ...@@ -1279,7 +1279,7 @@ Item_func_regex::fix_fields(THD *thd,TABLE_LIST *tables)
if ((error=regcomp(&preg,res->c_ptr(), if ((error=regcomp(&preg,res->c_ptr(),
binary ? REG_EXTENDED | REG_NOSUB : binary ? REG_EXTENDED | REG_NOSUB :
REG_EXTENDED | REG_NOSUB | REG_ICASE, REG_EXTENDED | REG_NOSUB | REG_ICASE,
default_charset_info))) res->charset())))
{ {
(void) regerror(error,&preg,buff,sizeof(buff)); (void) regerror(error,&preg,buff,sizeof(buff));
my_printf_error(ER_REGEXP_ERROR,ER(ER_REGEXP_ERROR),MYF(0),buff); my_printf_error(ER_REGEXP_ERROR,ER(ER_REGEXP_ERROR),MYF(0),buff);
...@@ -1327,7 +1327,7 @@ longlong Item_func_regex::val_int() ...@@ -1327,7 +1327,7 @@ longlong Item_func_regex::val_int()
if (regcomp(&preg,res2->c_ptr(), if (regcomp(&preg,res2->c_ptr(),
binary ? REG_EXTENDED | REG_NOSUB : binary ? REG_EXTENDED | REG_NOSUB :
REG_EXTENDED | REG_NOSUB | REG_ICASE, REG_EXTENDED | REG_NOSUB | REG_ICASE,
default_charset_info)) res->charset()))
{ {
null_value=1; null_value=1;
......
...@@ -36,26 +36,45 @@ class String ...@@ -36,26 +36,45 @@ class String
char *Ptr; char *Ptr;
uint32 str_length,Alloced_length; uint32 str_length,Alloced_length;
bool alloced; bool alloced;
CHARSET_INFO *str_charset;
public: public:
String() String()
{ Ptr=0; str_length=Alloced_length=0; alloced=0; } {
Ptr=0; str_length=Alloced_length=0; alloced=0;
str_charset=default_charset_info;
}
String(uint32 length_arg) String(uint32 length_arg)
{ alloced=0; Alloced_length=0; (void) real_alloc(length_arg); } {
alloced=0; Alloced_length=0; (void) real_alloc(length_arg);
str_charset=default_charset_info;
}
String(const char *str) String(const char *str)
{ Ptr=(char*) str; str_length=(uint) strlen(str); Alloced_length=0; alloced=0;} {
Ptr=(char*) str; str_length=(uint) strlen(str); Alloced_length=0; alloced=0;
str_charset=default_charset_info;
}
String(const char *str,uint32 len) String(const char *str,uint32 len)
{ Ptr=(char*) str; str_length=len; Alloced_length=0; alloced=0;} {
Ptr=(char*) str; str_length=len; Alloced_length=0; alloced=0;
str_charset=default_charset_info;
}
String(char *str,uint32 len) String(char *str,uint32 len)
{ Ptr=(char*) str; Alloced_length=str_length=len; alloced=0;} {
Ptr=(char*) str; Alloced_length=str_length=len; alloced=0;
str_charset=default_charset_info;
}
String(const String &str) String(const String &str)
{ Ptr=str.Ptr ; str_length=str.str_length ; {
Alloced_length=str.Alloced_length; alloced=0; } Ptr=str.Ptr ; str_length=str.str_length ;
Alloced_length=str.Alloced_length; alloced=0;
str_charset=str.str_charset;
}
static void *operator new(size_t size) { return (void*) sql_alloc((uint) size); } static void *operator new(size_t size) { return (void*) sql_alloc((uint) size); }
static void operator delete(void *ptr_arg,size_t size) /*lint -e715 */ static void operator delete(void *ptr_arg,size_t size) /*lint -e715 */
{ sql_element_free(ptr_arg); } { sql_element_free(ptr_arg); }
~String() { free(); } ~String() { free(); }
inline CHARSET_INFO *charset() const { return str_charset; }
inline uint32 length() const { return str_length;} inline uint32 length() const { return str_length;}
inline uint32 alloced_length() const { return Alloced_length;} inline uint32 alloced_length() const { return Alloced_length;}
inline char& operator [] (uint32 i) const { return Ptr[i]; } inline char& operator [] (uint32 i) const { return Ptr[i]; }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment