diff options
author | bar@bar.mysql.r18.ru <> | 2002-12-19 09:38:30 +0400 |
---|---|---|
committer | bar@bar.mysql.r18.ru <> | 2002-12-19 09:38:30 +0400 |
commit | fbad8dc364a4c7f09b0f40c4e7e64ceccba03ea8 (patch) | |
tree | 5e26916ad93e0bf67386803553249931ae30823b | |
parent | 1bba969b1e026419153bdb454a7b3c8c15393253 (diff) | |
download | mariadb-git-fbad8dc364a4c7f09b0f40c4e7e64ceccba03ea8.tar.gz |
less use of system_charset_info
-rw-r--r-- | sql/field.cc | 3 | ||||
-rw-r--r-- | sql/item_cmpfunc.cc | 4 | ||||
-rw-r--r-- | sql/time.cc | 48 |
3 files changed, 28 insertions, 27 deletions
diff --git a/sql/field.cc b/sql/field.cc index 6402942dbdf..8a53928a771 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -855,12 +855,13 @@ String *Field_decimal::val_str(String *val_buffer __attribute__((unused)), String *val_ptr) { char *str; + CHARSET_INFO *cs=current_thd->variables.thd_charset; for (str=ptr ; *str == ' ' ; str++) ; uint tmp_length=(uint) (str-ptr); if (field_length < tmp_length) // Error in data val_ptr->length(0); else - val_ptr->set((const char*) str,field_length-tmp_length,default_charset_info); + val_ptr->copy((const char*) str,field_length-tmp_length,my_charset_latin1,cs); return val_ptr; } diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index a30faae9a01..851a591bae9 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -878,7 +878,7 @@ String *Item_func_case::val_str(String *str) longlong Item_func_case::val_int() { char buff[MAX_FIELD_WIDTH]; - String dummy_str(buff,sizeof(buff),default_charset_info); + String dummy_str(buff,sizeof(buff),thd_charset()); Item *item=find_item(&dummy_str); longlong res; @@ -895,7 +895,7 @@ longlong Item_func_case::val_int() double Item_func_case::val() { char buff[MAX_FIELD_WIDTH]; - String dummy_str(buff,sizeof(buff),default_charset_info); + String dummy_str(buff,sizeof(buff),thd_charset()); Item *item=find_item(&dummy_str); double res; diff --git a/sql/time.cc b/sql/time.cc index 282075df9eb..76e67115a92 100644 --- a/sql/time.cc +++ b/sql/time.cc @@ -268,13 +268,13 @@ void find_date(string pos,uint *vek,uint flag) DBUG_PRINT("enter",("pos: '%s' flag: %d",pos,flag)); bzero((char*) vek,sizeof(int)*4); - while (*pos && !my_isdigit(system_charset_info,*pos)) + while (*pos && !my_isdigit(my_charset_latin1,*pos)) pos++; length=(uint) strlen(pos); for (uint i=0 ; i< 3; i++) { start=pos; value=0; - while (my_isdigit(system_charset_info,pos[0]) && + while (my_isdigit(my_charset_latin1,pos[0]) && ((pos-start) < 2 || ((pos-start) < 4 && length >= 8 && !(flag & 3)))) { @@ -282,8 +282,8 @@ void find_date(string pos,uint *vek,uint flag) pos++; } vek[flag & 3]=value; flag>>=2; - while (*pos && (my_ispunct(system_charset_info,*pos) || - my_isspace(system_charset_info,*pos))) + while (*pos && (my_ispunct(my_charset_latin1,*pos) || + my_isspace(my_charset_latin1,*pos))) pos++; } DBUG_PRINT("exit",("year: %d month: %d day: %d",vek[0],vek[1],vek[2])); @@ -452,7 +452,7 @@ str_to_TIME(const char *str, uint length, TIME *l_time,bool fuzzy_date) DBUG_PRINT("enter",("str: %.*s",length,str)); // Skip garbage - for (; str != end && !my_isdigit(system_charset_info, *str) ; str++) ; + for (; str != end && !my_isdigit(my_charset_latin1, *str) ; str++) ; if (str == end) DBUG_RETURN(TIMESTAMP_NONE); /* @@ -460,15 +460,15 @@ str_to_TIME(const char *str, uint length, TIME *l_time,bool fuzzy_date) If length= 8 or >= 14 then year is of format YYYY. (YYYY-MM-DD, YYYYMMDD, YYYYYMMDDHHMMSS) */ - for (pos=str; pos != end && my_isdigit(system_charset_info,*pos) ; pos++) ; + for (pos=str; pos != end && my_isdigit(my_charset_latin1,*pos) ; pos++) ; digits= (uint) (pos-str); year_length= (digits == 4 || digits == 8 || digits >= 14) ? 4 : 2; field_length=year_length-1; not_zero_date= 0; - for (i=0 ; i < 6 && str != end && my_isdigit(system_charset_info,*str) ; i++) + for (i=0 ; i < 6 && str != end && my_isdigit(my_charset_latin1,*str) ; i++) { uint tmp_value=(uint) (uchar) (*str++ - '0'); - while (str != end && my_isdigit(system_charset_info,str[0]) && + while (str != end && my_isdigit(my_charset_latin1,str[0]) && field_length--) { tmp_value=tmp_value*10 + (uint) (uchar) (*str - '0'); @@ -481,11 +481,11 @@ str_to_TIME(const char *str, uint length, TIME *l_time,bool fuzzy_date) else if ( i != 5 ) // Skip inter-field delimiters { while (str != end && - (my_ispunct(system_charset_info,*str) || - my_isspace(system_charset_info,*str))) + (my_ispunct(my_charset_latin1,*str) || + my_isspace(my_charset_latin1,*str))) { // Only allow space between days and hours - if (my_isspace(system_charset_info,*str) && i != 2) + if (my_isspace(my_charset_latin1,*str) && i != 2) DBUG_RETURN(TIMESTAMP_NONE); str++; } @@ -494,12 +494,12 @@ str_to_TIME(const char *str, uint length, TIME *l_time,bool fuzzy_date) } /* Handle second fractions */ if (i == 6 && (uint) (end-str) >= 2 && *str == '.' && - my_isdigit(system_charset_info,str[1])) + my_isdigit(my_charset_latin1,str[1])) { str++; uint tmp_value=(uint) (uchar) (*str - '0'); field_length=3; - while (str++ != end && my_isdigit(system_charset_info,str[0]) && + while (str++ != end && my_isdigit(my_charset_latin1,str[0]) && field_length--) tmp_value=tmp_value*10 + (uint) (uchar) (*str - '0'); date[6]=tmp_value; @@ -522,7 +522,7 @@ str_to_TIME(const char *str, uint length, TIME *l_time,bool fuzzy_date) { for (; str != end ; str++) { - if (!my_isspace(system_charset_info, *str)) + if (!my_isspace(my_charset_latin1, *str)) { not_zero_date= 1; // Give warning break; @@ -537,7 +537,7 @@ str_to_TIME(const char *str, uint length, TIME *l_time,bool fuzzy_date) { for (; str != end ; str++) { - if (!my_isspace(system_charset_info,*str)) + if (!my_isspace(my_charset_latin1,*str)) { current_thd->cuted_fields++; break; @@ -599,7 +599,7 @@ bool str_to_time(const char *str,uint length,TIME *l_time) l_time->neg=0; for (; str != end && - !my_isdigit(system_charset_info,*str) && *str != '-' ; str++) + !my_isdigit(my_charset_latin1,*str) && *str != '-' ; str++) length--; if (str != end && *str == '-') { @@ -618,7 +618,7 @@ bool str_to_time(const char *str,uint length,TIME *l_time) } /* Not a timestamp. Try to get this as a DAYS_TO_SECOND string */ - for (value=0; str != end && my_isdigit(system_charset_info,*str) ; str++) + for (value=0; str != end && my_isdigit(my_charset_latin1,*str) ; str++) value=value*10L + (long) (*str - '0'); if (*str == ' ') @@ -630,7 +630,7 @@ bool str_to_time(const char *str,uint length,TIME *l_time) LINT_INIT(state); found_days=found_hours=0; if ((uint) (end-str) > 1 && (*str == ' ' && - my_isdigit(system_charset_info,str[1]))) + my_isdigit(my_charset_latin1,str[1]))) { // days ! date[0]=value; state=1; // Assume next is hours @@ -638,7 +638,7 @@ bool str_to_time(const char *str,uint length,TIME *l_time) str++; // Skip space; } else if ((end-str) > 1 && *str == ':' && - my_isdigit(system_charset_info,str[1])) + my_isdigit(my_charset_latin1,str[1])) { date[0]=0; // Assume we found hours date[1]=value; @@ -660,11 +660,11 @@ bool str_to_time(const char *str,uint length,TIME *l_time) /* Read hours, minutes and seconds */ for (;;) { - for (value=0; str != end && my_isdigit(system_charset_info,*str) ; str++) + for (value=0; str != end && my_isdigit(my_charset_latin1,*str) ; str++) value=value*10L + (long) (*str - '0'); date[state++]=value; if (state == 4 || (end-str) < 2 || *str != ':' || - !my_isdigit(system_charset_info,str[1])) + !my_isdigit(my_charset_latin1,str[1])) break; str++; // Skip ':' } @@ -684,12 +684,12 @@ bool str_to_time(const char *str,uint length,TIME *l_time) fractional: /* Get fractional second part */ - if ((end-str) >= 2 && *str == '.' && my_isdigit(system_charset_info,str[1])) + if ((end-str) >= 2 && *str == '.' && my_isdigit(my_charset_latin1,str[1])) { uint field_length=3; str++; value=(uint) (uchar) (*str - '0'); while (++str != end && - my_isdigit(system_charset_info,str[0]) && + my_isdigit(my_charset_latin1,str[0]) && field_length--) value=value*10 + (uint) (uchar) (*str - '0'); date[4]=value; @@ -715,7 +715,7 @@ bool str_to_time(const char *str,uint length,TIME *l_time) { do { - if (!my_isspace(system_charset_info,*str)) + if (!my_isspace(my_charset_latin1,*str)) { current_thd->cuted_fields++; break; |