diff options
Diffstat (limited to 'sql/item_cmpfunc.h')
-rw-r--r-- | sql/item_cmpfunc.h | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index 1221e316a72..1311cae335f 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -245,7 +245,7 @@ public: class Item_func_between :public Item_int_func { - CHARSET_INFO *cmp_charset; + DTCollation cmp_collation; public: Item_result cmp_type; String value0,value1,value2; @@ -382,21 +382,23 @@ class in_vector :public Sql_alloc protected: char *base; uint size; - qsort_cmp compare; + qsort2_cmp compare; + CHARSET_INFO *collation; uint count; public: uint used_count; in_vector() {} - in_vector(uint elements,uint element_length,qsort_cmp cmp_func) + in_vector(uint elements,uint element_length,qsort2_cmp cmp_func, + CHARSET_INFO *cmp_coll) :base((char*) sql_calloc(elements*element_length)), - size(element_length), compare(cmp_func), count(elements), - used_count(elements) {} + size(element_length), compare(cmp_func), collation(cmp_coll), + count(elements), used_count(elements) {} virtual ~in_vector() {} virtual void set(uint pos,Item *item)=0; virtual byte *get_value(Item *item)=0; void sort() { - qsort(base,used_count,size,compare); + qsort2(base,used_count,size,compare,collation); } int find(Item *item); }; @@ -406,7 +408,7 @@ class in_string :public in_vector char buff[80]; String tmp; public: - in_string(uint elements,qsort_cmp cmp_func); + in_string(uint elements,qsort2_cmp cmp_func, CHARSET_INFO *cs); ~in_string(); void set(uint pos,Item *item); byte *get_value(Item *item); @@ -605,6 +607,7 @@ class Item_func_in :public Item_int_func in_vector *array; cmp_item *in_item; bool have_null; + DTCollation cmp_collation; public: Item_func_in(Item *a,List<Item> &list) :Item_int_func(list), item(a), array(0), in_item(0), have_null(0) |