Commit e5103ce7 authored by bar@bar.mysql.r18.ru's avatar bar@bar.mysql.r18.ru

Less "default_charset_info"

parent c3053148
...@@ -4276,7 +4276,7 @@ uint Field_varstring::max_packed_col_length(uint max_length) ...@@ -4276,7 +4276,7 @@ uint Field_varstring::max_packed_col_length(uint max_length)
return (max_length > 255 ? 2 : 1)+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; length-= HA_KEY_BLOB_LENGTH;
uint f_length=uint2korr(ptr); uint f_length=uint2korr(ptr);
...@@ -4290,10 +4290,10 @@ void Field_varstring::get_key_image(char *buff, uint length, imagetype type) ...@@ -4290,10 +4290,10 @@ void Field_varstring::get_key_image(char *buff, uint length, imagetype type)
#endif #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 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, ...@@ -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 */ /* 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; length-= HA_KEY_BLOB_LENGTH;
uint32 blob_length= get_length(ptr); uint32 blob_length= get_length(ptr);
...@@ -4577,14 +4577,14 @@ void Field_blob::get_key_image(char *buff,uint length, imagetype type) ...@@ -4577,14 +4577,14 @@ void Field_blob::get_key_image(char *buff,uint length, imagetype type)
memcpy(buff+2,blob,length); 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); 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; length-=HA_KEY_BLOB_LENGTH;
ulong blob_length=get_length(ptr); ulong blob_length=get_length(ptr);
...@@ -4603,7 +4603,7 @@ void Field_geom::get_key_image(char *buff,uint length, imagetype type) ...@@ -4603,7 +4603,7 @@ void Field_geom::get_key_image(char *buff,uint length, imagetype type)
return; return;
} }
void Field_geom::set_key_image(char *buff,uint length) void Field_geom::set_key_image(char *buff,uint length,CHARSET_INFO *cs)
{ {
} }
......
...@@ -149,14 +149,14 @@ class Field ...@@ -149,14 +149,14 @@ class Field
if (null_ptr) if (null_ptr)
null_ptr=ADD_TO_PTR(null_ptr,ptr_diff,uchar*); 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); } { 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); } { memcpy(ptr,buff,length); }
virtual void get_key_image(char *buff,uint length, imagetype type) virtual void get_key_image(char *buff,uint length, CHARSET_INFO *cs, imagetype type)
{ get_image(buff,length); } { get_image(buff,length,cs); }
virtual void set_key_image(char *buff,uint length) virtual void set_key_image(char *buff,uint length, CHARSET_INFO *cs)
{ set_image(buff,length); } { set_image(buff,length,cs); }
inline int cmp_image(char *buff,uint length) inline int cmp_image(char *buff,uint length)
{ return memcmp(ptr,buff,length); } { return memcmp(ptr,buff,length); }
inline longlong val_int_offset(uint row_offset) inline longlong val_int_offset(uint row_offset)
...@@ -836,8 +836,8 @@ class Field_varstring :public Field_str { ...@@ -836,8 +836,8 @@ class Field_varstring :public Field_str {
bool send_binary(Protocol *protocol); bool send_binary(Protocol *protocol);
int cmp(const char *,const char*); int cmp(const char *,const char*);
void sort_string(char *buff,uint length); void sort_string(char *buff,uint length);
void get_key_image(char *buff,uint length, imagetype type); void get_key_image(char *buff,uint length, CHARSET_INFO *cs, imagetype type);
void set_key_image(char *buff,uint length); void set_key_image(char *buff,uint length, CHARSET_INFO *cs);
void sql_type(String &str) const; void sql_type(String &str) const;
char *pack(char *to, const char *from, uint max_length=~(uint) 0); char *pack(char *to, const char *from, uint max_length=~(uint) 0);
const char *unpack(char* to, const char *from); const char *unpack(char* to, const char *from);
...@@ -908,8 +908,8 @@ class Field_blob :public Field_str { ...@@ -908,8 +908,8 @@ class Field_blob :public Field_str {
store_length(length); store_length(length);
memcpy_fixed(ptr+packlength,&data,sizeof(char*)); memcpy_fixed(ptr+packlength,&data,sizeof(char*));
} }
void get_key_image(char *buff,uint length, imagetype type); void get_key_image(char *buff,uint length, CHARSET_INFO *cs, imagetype type);
void set_key_image(char *buff,uint length); void set_key_image(char *buff,uint length, CHARSET_INFO *cs);
void sql_type(String &str) const; void sql_type(String &str) const;
inline bool copy() inline bool copy()
{ char *tmp; { char *tmp;
...@@ -950,8 +950,8 @@ class Field_geom :public Field_blob { ...@@ -950,8 +950,8 @@ class Field_geom :public Field_blob {
table_arg, my_charset_bin) {} table_arg, my_charset_bin) {}
enum ha_base_keytype key_type() const { return HA_KEYTYPE_VARBINARY; } enum ha_base_keytype key_type() const { return HA_KEYTYPE_VARBINARY; }
void get_key_image(char *buff,uint length, imagetype type); void get_key_image(char *buff,uint length, CHARSET_INFO *cs,imagetype type);
void set_key_image(char *buff,uint length); void set_key_image(char *buff,uint length, CHARSET_INFO *cs);
}; };
......
...@@ -99,7 +99,7 @@ bool Item_field_buff::cmp(void) ...@@ -99,7 +99,7 @@ bool Item_field_buff::cmp(void)
{ {
bool tmp= field->cmp(buff) != 0; // This is not a blob! bool tmp= field->cmp(buff) != 0; // This is not a blob!
if (tmp) if (tmp)
field->get_image(buff,length); field->get_image(buff,length,field->charset());
if (null_value != field->is_null()) if (null_value != field->is_null())
{ {
null_value= !null_value; null_value= !null_value;
......
...@@ -1043,7 +1043,7 @@ get_mm_leaf(PARAM *param, Field *field, KEY_PART *key_part, ...@@ -1043,7 +1043,7 @@ get_mm_leaf(PARAM *param, Field *field, KEY_PART *key_part,
if (maybe_null) if (maybe_null)
*str= (char) field->is_real_null(); // Set to 1 if null *str= (char) field->is_real_null(); // Set to 1 if null
field->get_key_image(str+maybe_null,key_part->part_length, 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))) if (!(tree=new SEL_ARG(field,str,str)))
DBUG_RETURN(0); DBUG_RETURN(0);
...@@ -2813,7 +2813,8 @@ print_key(KEY_PART *key_part,const char *key,uint used_length) ...@@ -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->set_key_image((char*) key,key_part->part_length -
((field->type() == FIELD_TYPE_BLOB) ? ((field->type() == FIELD_TYPE_BLOB) ?
HA_KEY_BLOB_LENGTH : 0)); HA_KEY_BLOB_LENGTH : 0),
field->charset());
field->val_str(&tmp,&tmp); field->val_str(&tmp,&tmp);
fwrite(tmp.ptr(),sizeof(char),tmp.length(),DBUG_FILE); fwrite(tmp.ptr(),sizeof(char),tmp.length(),DBUG_FILE);
} }
......
...@@ -364,7 +364,8 @@ static bool find_range_key(TABLE_REF *ref, Field* field, COND *cond) ...@@ -364,7 +364,8 @@ static bool find_range_key(TABLE_REF *ref, Field* field, COND *cond)
// Save found constant // Save found constant
if (part->null_bit) if (part->null_bit)
*key_ptr++= (byte) test(part->field->is_null()); *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); key_ptr+=part->store_length - test(part->null_bit);
left_length-=part->store_length; left_length-=part->store_length;
} }
......
...@@ -6645,12 +6645,14 @@ store_record_in_cache(JOIN_CACHE *cache) ...@@ -6645,12 +6645,14 @@ store_record_in_cache(JOIN_CACHE *cache)
{ {
if (last_record) 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*); pos+=copy->length+sizeof(char*);
} }
else 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 memcpy(pos+copy->length,copy->str,copy->blob_length); // Blob data
pos+=copy->length+copy->blob_length; pos+=copy->length+copy->blob_length;
} }
...@@ -6707,7 +6709,8 @@ read_cached_record(JOIN_TAB *tab) ...@@ -6707,7 +6709,8 @@ read_cached_record(JOIN_TAB *tab)
{ {
if (last_record) 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*); pos+=copy->length+sizeof(char*);
} }
else else
......
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