diff options
author | unknown <bar@bar.mysql.r18.ru> | 2002-12-19 15:27:46 +0400 |
---|---|---|
committer | unknown <bar@bar.mysql.r18.ru> | 2002-12-19 15:27:46 +0400 |
commit | d19ba004e45cb33f5dce8182b633a54af3b9c4c3 (patch) | |
tree | c3e6bd23507975df60294ce53fadcc33d3a0b554 | |
parent | ef9c22611960eb3e7ebf1d0e4a53f47e3ef62480 (diff) | |
download | mariadb-git-d19ba004e45cb33f5dce8182b633a54af3b9c4c3.tar.gz |
Less "default_charset_info"
-rw-r--r-- | sql/field.cc | 16 | ||||
-rw-r--r-- | sql/field.h | 24 | ||||
-rw-r--r-- | sql/item_buff.cc | 2 | ||||
-rw-r--r-- | sql/opt_range.cc | 5 | ||||
-rw-r--r-- | sql/opt_sum.cc | 3 | ||||
-rw-r--r-- | sql/sql_select.cc | 9 |
6 files changed, 32 insertions, 27 deletions
diff --git a/sql/field.cc b/sql/field.cc index 8a53928a771..9acf2e14829 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -4276,7 +4276,7 @@ uint Field_varstring::max_packed_col_length(uint max_length) return (max_length > 255 ? 2 : 1)+max_length; } -void Field_varstring::get_key_image(char *buff, uint length, imagetype type) +void Field_varstring::get_key_image(char *buff, uint length, CHARSET_INFO *cs,imagetype type) { length-= HA_KEY_BLOB_LENGTH; uint f_length=uint2korr(ptr); @@ -4290,10 +4290,10 @@ void Field_varstring::get_key_image(char *buff, uint length, imagetype type) #endif } -void Field_varstring::set_key_image(char *buff,uint length) +void Field_varstring::set_key_image(char *buff,uint length, CHARSET_INFO *cs) { length=uint2korr(buff); // Real length is here - (void) Field_varstring::store(buff+2, length, default_charset_info); + (void) Field_varstring::store(buff+2, length, cs); } @@ -4542,7 +4542,7 @@ int Field_blob::cmp_binary(const char *a_ptr, const char *b_ptr, /* The following is used only when comparing a key */ -void Field_blob::get_key_image(char *buff,uint length, imagetype type) +void Field_blob::get_key_image(char *buff,uint length, CHARSET_INFO *cs,imagetype type) { length-= HA_KEY_BLOB_LENGTH; uint32 blob_length= get_length(ptr); @@ -4577,14 +4577,14 @@ void Field_blob::get_key_image(char *buff,uint length, imagetype type) memcpy(buff+2,blob,length); } -void Field_blob::set_key_image(char *buff,uint length) +void Field_blob::set_key_image(char *buff,uint length, CHARSET_INFO *cs) { length=uint2korr(buff); - (void) Field_blob::store(buff+2,length, default_charset_info); + (void) Field_blob::store(buff+2,length,cs); } -void Field_geom::get_key_image(char *buff,uint length, imagetype type) +void Field_geom::get_key_image(char *buff,uint length,CHARSET_INFO *cs, imagetype type) { length-=HA_KEY_BLOB_LENGTH; ulong blob_length=get_length(ptr); @@ -4603,7 +4603,7 @@ void Field_geom::get_key_image(char *buff,uint length, imagetype type) return; } -void Field_geom::set_key_image(char *buff,uint length) +void Field_geom::set_key_image(char *buff,uint length,CHARSET_INFO *cs) { } diff --git a/sql/field.h b/sql/field.h index d0855aa46b3..40578d19c82 100644 --- a/sql/field.h +++ b/sql/field.h @@ -149,14 +149,14 @@ public: if (null_ptr) null_ptr=ADD_TO_PTR(null_ptr,ptr_diff,uchar*); } - inline void get_image(char *buff,uint length) + inline void get_image(char *buff,uint length, CHARSET_INFO *cs) { memcpy(buff,ptr,length); } - inline void set_image(char *buff,uint length) + inline void set_image(char *buff,uint length, CHARSET_INFO *cs) { memcpy(ptr,buff,length); } - virtual void get_key_image(char *buff,uint length, imagetype type) - { get_image(buff,length); } - virtual void set_key_image(char *buff,uint length) - { set_image(buff,length); } + virtual void get_key_image(char *buff,uint length, CHARSET_INFO *cs, imagetype type) + { get_image(buff,length,cs); } + virtual void set_key_image(char *buff,uint length, CHARSET_INFO *cs) + { set_image(buff,length,cs); } inline int cmp_image(char *buff,uint length) { return memcmp(ptr,buff,length); } inline longlong val_int_offset(uint row_offset) @@ -836,8 +836,8 @@ public: bool send_binary(Protocol *protocol); int cmp(const char *,const char*); void sort_string(char *buff,uint length); - void get_key_image(char *buff,uint length, imagetype type); - void set_key_image(char *buff,uint length); + void get_key_image(char *buff,uint length, CHARSET_INFO *cs, imagetype type); + void set_key_image(char *buff,uint length, CHARSET_INFO *cs); void sql_type(String &str) const; char *pack(char *to, const char *from, uint max_length=~(uint) 0); const char *unpack(char* to, const char *from); @@ -908,8 +908,8 @@ public: store_length(length); memcpy_fixed(ptr+packlength,&data,sizeof(char*)); } - void get_key_image(char *buff,uint length, imagetype type); - void set_key_image(char *buff,uint length); + void get_key_image(char *buff,uint length, CHARSET_INFO *cs, imagetype type); + void set_key_image(char *buff,uint length, CHARSET_INFO *cs); void sql_type(String &str) const; inline bool copy() { char *tmp; @@ -950,8 +950,8 @@ public: table_arg, my_charset_bin) {} enum ha_base_keytype key_type() const { return HA_KEYTYPE_VARBINARY; } - void get_key_image(char *buff,uint length, imagetype type); - void set_key_image(char *buff,uint length); + void get_key_image(char *buff,uint length, CHARSET_INFO *cs,imagetype type); + void set_key_image(char *buff,uint length, CHARSET_INFO *cs); }; diff --git a/sql/item_buff.cc b/sql/item_buff.cc index 7b8976bb572..573d4ab17e3 100644 --- a/sql/item_buff.cc +++ b/sql/item_buff.cc @@ -99,7 +99,7 @@ bool Item_field_buff::cmp(void) { bool tmp= field->cmp(buff) != 0; // This is not a blob! if (tmp) - field->get_image(buff,length); + field->get_image(buff,length,field->charset()); if (null_value != field->is_null()) { null_value= !null_value; diff --git a/sql/opt_range.cc b/sql/opt_range.cc index bcea522cb6d..fd1a56fc97a 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -1043,7 +1043,7 @@ get_mm_leaf(PARAM *param, Field *field, KEY_PART *key_part, if (maybe_null) *str= (char) field->is_real_null(); // Set to 1 if null field->get_key_image(str+maybe_null,key_part->part_length, - key_part->image_type); + field->charset(),key_part->image_type); if (!(tree=new SEL_ARG(field,str,str))) DBUG_RETURN(0); @@ -2813,7 +2813,8 @@ print_key(KEY_PART *key_part,const char *key,uint used_length) } field->set_key_image((char*) key,key_part->part_length - ((field->type() == FIELD_TYPE_BLOB) ? - HA_KEY_BLOB_LENGTH : 0)); + HA_KEY_BLOB_LENGTH : 0), + field->charset()); field->val_str(&tmp,&tmp); fwrite(tmp.ptr(),sizeof(char),tmp.length(),DBUG_FILE); } diff --git a/sql/opt_sum.cc b/sql/opt_sum.cc index 1477d46e756..b1bb36353bf 100644 --- a/sql/opt_sum.cc +++ b/sql/opt_sum.cc @@ -364,7 +364,8 @@ static bool find_range_key(TABLE_REF *ref, Field* field, COND *cond) // Save found constant if (part->null_bit) *key_ptr++= (byte) test(part->field->is_null()); - part->field->get_key_image((char*) key_ptr,part->length, Field::itRAW); + part->field->get_key_image((char*) key_ptr,part->length, + part->field->charset(), Field::itRAW); key_ptr+=part->store_length - test(part->null_bit); left_length-=part->store_length; } diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 602a4b494b6..988cae8363b 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -6645,12 +6645,14 @@ store_record_in_cache(JOIN_CACHE *cache) { if (last_record) { - copy->blob_field->get_image((char*) pos,copy->length+sizeof(char*)); + copy->blob_field->get_image((char*) pos,copy->length+sizeof(char*), + copy->blob_field->charset()); pos+=copy->length+sizeof(char*); } else { - copy->blob_field->get_image((char*) pos,copy->length); // blob length + copy->blob_field->get_image((char*) pos,copy->length, // blob length + copy->blob_field->charset()); memcpy(pos+copy->length,copy->str,copy->blob_length); // Blob data pos+=copy->length+copy->blob_length; } @@ -6707,7 +6709,8 @@ read_cached_record(JOIN_TAB *tab) { if (last_record) { - copy->blob_field->set_image((char*) pos,copy->length+sizeof(char*)); + copy->blob_field->set_image((char*) pos,copy->length+sizeof(char*), + copy->blob_field->charset()); pos+=copy->length+sizeof(char*); } else |