diff options
Diffstat (limited to 'sql')
28 files changed, 157 insertions, 73 deletions
diff --git a/sql/item.cc b/sql/item.cc index 950f27c5d69..c99493ff689 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -39,7 +39,7 @@ Item::Item(): { marker= 0; maybe_null=null_value=with_sum_func=unsigned_flag=0; - set_charset(&my_charset_bin, DERIVATION_COERCIBLE); + set_charset(default_charset(), DERIVATION_COERCIBLE); name= 0; decimals= 0; max_length= 0; THD *thd= current_thd; @@ -185,27 +185,27 @@ CHARSET_INFO * Item::default_charset() const bool DTCollation::aggregate(DTCollation &dt) { - if (collation == &my_charset_bin || dt.collation == &my_charset_bin) - { - collation= &my_charset_bin; - derivation= derivation > dt.derivation ? derivation : dt.derivation; - return 0; - } - if (!my_charset_same(collation, dt.collation)) { /* We do allow to use binary strings (like BLOBS) together with character strings. - Binaries have more precedance + Binaries have more precedance than a character + string of the same derivation. */ - if ((derivation <= dt.derivation) && (collation == &my_charset_bin)) + if (collation == &my_charset_bin) { - // Do nothing + if (derivation <= dt.derivation) + ; // Do nothing + else + set(dt); } - else if ((dt.derivation <= derivation) && (dt.collation==&my_charset_bin)) + else if (dt.collation == &my_charset_bin) { - set(dt); + if (dt.derivation <= derivation) + set(dt); + else + ; // Do nothing } else { diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 52bd14ed515..f9c2228b33d 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -26,12 +26,24 @@ static void my_coll_agg_error(DTCollation &c1, DTCollation &c2, const char *fname) { - my_error(ER_CANT_AGGREGATE_COLLATIONS,MYF(0), + my_error(ER_CANT_AGGREGATE_2COLLATIONS,MYF(0), c1.collation->name,c1.derivation_name(), c2.collation->name,c2.derivation_name(), fname); } +static void my_coll_agg3_error(DTCollation &c1, + DTCollation &c2, + DTCollation &c3, + const char *fname) +{ + my_error(ER_CANT_AGGREGATE_3COLLATIONS,MYF(0), + c1.collation->name,c1.derivation_name(), + c2.collation->name,c2.derivation_name(), + c3.collation->name,c3.derivation_name(), + fname); +} + Item_bool_func2* Item_bool_func2::eq_creator(Item *a, Item *b) { return new Item_func_eq(a, b); @@ -575,11 +587,19 @@ void Item_func_between::fix_length_and_dec() cmp_type=item_cmp_type(args[0]->result_type(), item_cmp_type(args[1]->result_type(), args[2]->result_type())); - /* QQ: COERCIBILITY */ - if (args[0]->binary() | args[1]->binary() | args[2]->binary()) - cmp_charset= &my_charset_bin; - else - cmp_charset= args[0]->charset(); + + if (cmp_type == STRING_RESULT) + { + cmp_collation.set(args[0]->collation); + if (!cmp_collation.aggregate(args[1]->collation)) + cmp_collation.aggregate(args[2]->collation); + if (cmp_collation.derivation == DERIVATION_NONE) + { + my_coll_agg3_error(args[0]->collation, args[1]->collation, + args[2]->collation, func_name()); + return; + } + } /* Make a special case of compare with date/time and longlong fields. @@ -611,17 +631,17 @@ longlong Item_func_between::val_int() a=args[1]->val_str(&value1); b=args[2]->val_str(&value2); if (!args[1]->null_value && !args[2]->null_value) - return (sortcmp(value,a,cmp_charset) >= 0 && - sortcmp(value,b,cmp_charset) <= 0) ? 1 : 0; + return (sortcmp(value,a,cmp_collation.collation) >= 0 && + sortcmp(value,b,cmp_collation.collation) <= 0) ? 1 : 0; if (args[1]->null_value && args[2]->null_value) null_value=1; else if (args[1]->null_value) { - null_value= sortcmp(value,b,cmp_charset) <= 0; // not null if false range. + null_value= sortcmp(value,b,cmp_collation.collation) <= 0; // not null if false range. } else { - null_value= sortcmp(value,a,cmp_charset) >= 0; // not null if false range. + null_value= sortcmp(value,a,cmp_collation.collation) >= 0; // not null if false range. } } else if (cmp_type == INT_RESULT) @@ -1176,17 +1196,17 @@ void Item_func_coalesce::fix_length_and_dec() Classes and function for the IN operator ****************************************************************************/ -static int cmp_longlong(longlong *a,longlong *b) +static int cmp_longlong(void *cmp_arg, longlong *a,longlong *b) { return *a < *b ? -1 : *a == *b ? 0 : 1; } -static int cmp_double(double *a,double *b) +static int cmp_double(void *cmp_arg, double *a,double *b) { return *a < *b ? -1 : *a == *b ? 0 : 1; } -static int cmp_row(cmp_item_row* a, cmp_item_row* b) +static int cmp_row(void *cmp_arg, cmp_item_row* a, cmp_item_row* b) { return a->compare(b); } @@ -1203,18 +1223,18 @@ int in_vector::find(Item *item) { uint mid=(start+end+1)/2; int res; - if ((res=(*compare)(base+mid*size,result)) == 0) + if ((res=(*compare)(collation, base+mid*size, result)) == 0) return 1; if (res < 0) start=mid; else end=mid-1; } - return (int) ((*compare)(base+start*size,result) == 0); + return (int) ((*compare)(collation, base+start*size, result) == 0); } -in_string::in_string(uint elements,qsort_cmp cmp_func) - :in_vector(elements, sizeof(String), cmp_func), +in_string::in_string(uint elements,qsort2_cmp cmp_func, CHARSET_INFO *cs) + :in_vector(elements, sizeof(String), cmp_func, cs), tmp(buff, sizeof(buff), &my_charset_bin) {} @@ -1253,7 +1273,7 @@ in_row::in_row(uint elements, Item * item) { base= (char*) new cmp_item_row[count= elements]; size= sizeof(cmp_item_row); - compare= (qsort_cmp) cmp_row; + compare= (qsort2_cmp) cmp_row; tmp.store_value(item); } @@ -1278,7 +1298,7 @@ void in_row::set(uint pos, Item *item) } in_longlong::in_longlong(uint elements) - :in_vector(elements,sizeof(longlong),(qsort_cmp) cmp_longlong) + :in_vector(elements,sizeof(longlong),(qsort2_cmp) cmp_longlong, 0) {} void in_longlong::set(uint pos,Item *item) @@ -1295,7 +1315,7 @@ byte *in_longlong::get_value(Item *item) } in_double::in_double(uint elements) - :in_vector(elements,sizeof(double),(qsort_cmp) cmp_double) + :in_vector(elements,sizeof(double),(qsort2_cmp) cmp_double, 0) {} void in_double::set(uint pos,Item *item) @@ -1442,17 +1462,8 @@ bool Item_func_in::nulls_in_row() return 0; } -static int srtcmp_in(const String *x,const String *y) +static int srtcmp_in(CHARSET_INFO *cs, const String *x,const String *y) { - CHARSET_INFO *cs= x->charset(); - return cs->coll->strnncollsp(cs, - (unsigned char *) x->ptr(),x->length(), - (unsigned char *) y->ptr(),y->length()); -} - -static int bincmp_in(const String *x,const String *y) -{ - CHARSET_INFO *cs= &my_charset_bin; return cs->coll->strnncollsp(cs, (unsigned char *) x->ptr(),x->length(), (unsigned char *) y->ptr(),y->length()); @@ -1468,10 +1479,18 @@ void Item_func_in::fix_length_and_dec() { switch (item->result_type()) { case STRING_RESULT: - if (item->binary()) - array=new in_string(arg_count,(qsort_cmp) srtcmp_in); - else - array=new in_string(arg_count,(qsort_cmp) bincmp_in); + uint i; + cmp_collation.set(item->collation); + for (i=0 ; i<arg_count; i++) + if (cmp_collation.aggregate(args[i]->collation)) + break; + if (cmp_collation.derivation == DERIVATION_NONE) + { + my_error(ER_CANT_AGGREGATE_NCOLLATIONS,MYF(0),func_name()); + return; + } + array=new in_string(arg_count,(qsort2_cmp) srtcmp_in, + cmp_collation.collation); break; case INT_RESULT: array= new in_longlong(arg_count); @@ -1968,7 +1987,12 @@ Item_func_regex::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref) with_sum_func=args[0]->with_sum_func || args[1]->with_sum_func; max_length= 1; decimals= 0; - binary_cmp= (args[0]->binary() || args[1]->binary()); + + if (cmp_collation.set(args[0]->collation, args[1]->collation)) + { + my_coll_agg_error(args[0]->collation, args[1]->collation, func_name()); + return 1; + } used_tables_cache=args[0]->used_tables() | args[1]->used_tables(); const_item_cache=args[0]->const_item() && args[1]->const_item(); @@ -1984,9 +2008,10 @@ Item_func_regex::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref) } int error; if ((error=regcomp(&preg,res->c_ptr(), - binary_cmp ? REG_EXTENDED | REG_NOSUB : + (cmp_collation.collation->state & MY_CS_BINSORT) ? + REG_EXTENDED | REG_NOSUB : REG_EXTENDED | REG_NOSUB | REG_ICASE, - res->charset()))) + cmp_collation.collation))) { (void) regerror(error,&preg,buff,sizeof(buff)); my_printf_error(ER_REGEXP_ERROR,ER(ER_REGEXP_ERROR),MYF(0),buff); @@ -2033,10 +2058,10 @@ longlong Item_func_regex::val_int() regex_compiled=0; } if (regcomp(&preg,res2->c_ptr(), - binary_cmp ? REG_EXTENDED | REG_NOSUB : + (cmp_collation.collation->state & MY_CS_BINSORT) ? + REG_EXTENDED | REG_NOSUB : REG_EXTENDED | REG_NOSUB | REG_ICASE, - res->charset())) - + cmp_collation.collation)) { null_value=1; return 0; diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index 70e477402d9..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) @@ -747,7 +750,7 @@ class Item_func_regex :public Item_bool_func bool regex_compiled; bool regex_is_const; String prev_regexp; - bool binary_cmp; + DTCollation cmp_collation; public: Item_func_regex(Item *a,Item *b) :Item_bool_func(a,b), regex_compiled(0),regex_is_const(0) {} diff --git a/sql/item_func.cc b/sql/item_func.cc index cabffdfc7c2..d7237f55522 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -33,7 +33,7 @@ static void my_coll_agg_error(DTCollation &c1, DTCollation &c2, const char *fname) { - my_error(ER_CANT_AGGREGATE_COLLATIONS,MYF(0), + my_error(ER_CANT_AGGREGATE_2COLLATIONS,MYF(0), c1.collation->name,c1.derivation_name(), c2.collation->name,c2.derivation_name(), fname); diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index a57800c89d1..ae63ac85d4d 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -38,12 +38,24 @@ String empty_string("",default_charset_info); static void my_coll_agg_error(DTCollation &c1, DTCollation &c2, const char *fname) { - my_error(ER_CANT_AGGREGATE_COLLATIONS,MYF(0), + my_error(ER_CANT_AGGREGATE_2COLLATIONS,MYF(0), c1.collation->name,c1.derivation_name(), c2.collation->name,c2.derivation_name(), fname); } +static void my_coll_agg3_error(DTCollation &c1, + DTCollation &c2, + DTCollation &c3, + const char *fname) +{ + my_error(ER_CANT_AGGREGATE_3COLLATIONS,MYF(0), + c1.collation->name,c1.derivation_name(), + c2.collation->name,c2.derivation_name(), + c3.collation->name,c3.derivation_name(), + fname); +} + uint nr_of_decimals(const char *str) { if ((str=strchr(str,'.'))) @@ -733,6 +745,8 @@ String *Item_func_replace::val_str(String *str) if (args[1]->null_value) goto null; + res->set_charset(collation.collation); + #ifdef USE_MB binary_cmp = (args[0]->binary() || args[1]->binary() || !use_mb(res->charset())); #endif @@ -813,7 +827,6 @@ null: void Item_func_replace::fix_length_and_dec() { - uint i; max_length=args[0]->max_length; int diff=(int) (args[2]->max_length - args[1]->max_length); if (diff > 0 && args[1]->max_length) @@ -828,14 +841,12 @@ void Item_func_replace::fix_length_and_dec() } collation.set(args[0]->collation); - for (i=1; i<3; i++) - { - if (collation.aggregate(args[i]->collation)) - { - my_coll_agg_error(collation, args[i]->collation, func_name()); - break; - } - } + if (!collation.aggregate(args[1]->collation)) + collation.aggregate(args[2]->collation); + + if (collation.derivation == DERIVATION_NONE) + my_coll_agg3_error(args[0]->collation, args[1]->collation, + args[2]->collation, func_name()); } @@ -931,7 +942,6 @@ String *Item_func_left::val_str(String *str) if (!res->alloced_length()) { // Don't change const str str_value= *res; // Not malloced string - set_charset(res->charset()); res= &str_value; } res->length((uint) length); diff --git a/sql/share/czech/errmsg.txt b/sql/share/czech/errmsg.txt index 273dfa0fcf5..190d208a033 100644 --- a/sql/share/czech/errmsg.txt +++ b/sql/share/czech/errmsg.txt @@ -273,3 +273,5 @@ v/* "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/danish/errmsg.txt b/sql/share/danish/errmsg.txt index 1d39a328154..909f69617a0 100644 --- a/sql/share/danish/errmsg.txt +++ b/sql/share/danish/errmsg.txt @@ -267,3 +267,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/dutch/errmsg.txt b/sql/share/dutch/errmsg.txt index 5b79f06b621..8d8da1840fb 100644 --- a/sql/share/dutch/errmsg.txt +++ b/sql/share/dutch/errmsg.txt @@ -275,3 +275,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/english/errmsg.txt b/sql/share/english/errmsg.txt index f15e063c487..9e22377ce77 100644 --- a/sql/share/english/errmsg.txt +++ b/sql/share/english/errmsg.txt @@ -269,3 +269,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/estonian/errmsg.txt b/sql/share/estonian/errmsg.txt index 506b5fc0188..c3b5fa7a2ec 100644 --- a/sql/share/estonian/errmsg.txt +++ b/sql/share/estonian/errmsg.txt @@ -269,3 +269,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/french/errmsg.txt b/sql/share/french/errmsg.txt index 8882e4dceda..6c34663021c 100644 --- a/sql/share/french/errmsg.txt +++ b/sql/share/french/errmsg.txt @@ -264,3 +264,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/german/errmsg.txt b/sql/share/german/errmsg.txt index 1e8f5bb2c05..2741d1e5a25 100644 --- a/sql/share/german/errmsg.txt +++ b/sql/share/german/errmsg.txt @@ -273,3 +273,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/greek/errmsg.txt b/sql/share/greek/errmsg.txt index d322f3fbd6a..b643e465846 100644 --- a/sql/share/greek/errmsg.txt +++ b/sql/share/greek/errmsg.txt @@ -264,3 +264,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/hungarian/errmsg.txt b/sql/share/hungarian/errmsg.txt index 162bfc5509c..86fbb4dce6f 100644 --- a/sql/share/hungarian/errmsg.txt +++ b/sql/share/hungarian/errmsg.txt @@ -266,3 +266,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/italian/errmsg.txt b/sql/share/italian/errmsg.txt index 26d916a968d..71c5d7f2c95 100644 --- a/sql/share/italian/errmsg.txt +++ b/sql/share/italian/errmsg.txt @@ -264,3 +264,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/japanese/errmsg.txt b/sql/share/japanese/errmsg.txt index a01a2b7ff6f..a9aa0747a59 100644 --- a/sql/share/japanese/errmsg.txt +++ b/sql/share/japanese/errmsg.txt @@ -266,3 +266,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/korean/errmsg.txt b/sql/share/korean/errmsg.txt index 5f5526be04b..a6cf0a35dd0 100644 --- a/sql/share/korean/errmsg.txt +++ b/sql/share/korean/errmsg.txt @@ -264,3 +264,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/norwegian-ny/errmsg.txt b/sql/share/norwegian-ny/errmsg.txt index bf1019d3d87..062fd8dd8f7 100644 --- a/sql/share/norwegian-ny/errmsg.txt +++ b/sql/share/norwegian-ny/errmsg.txt @@ -266,3 +266,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/norwegian/errmsg.txt b/sql/share/norwegian/errmsg.txt index 68c95bbf22b..d5268237ee4 100644 --- a/sql/share/norwegian/errmsg.txt +++ b/sql/share/norwegian/errmsg.txt @@ -266,3 +266,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/polish/errmsg.txt b/sql/share/polish/errmsg.txt index 5b93403c757..e6861f7f8bb 100644 --- a/sql/share/polish/errmsg.txt +++ b/sql/share/polish/errmsg.txt @@ -268,3 +268,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/portuguese/errmsg.txt b/sql/share/portuguese/errmsg.txt index edd3e3b813f..f389084514b 100644 --- a/sql/share/portuguese/errmsg.txt +++ b/sql/share/portuguese/errmsg.txt @@ -264,3 +264,5 @@ "Combinação ilegal de collations (%s,%s) e (%s,%s) para operação '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/romanian/errmsg.txt b/sql/share/romanian/errmsg.txt index 873a708fa7b..32b0e0bcd03 100644 --- a/sql/share/romanian/errmsg.txt +++ b/sql/share/romanian/errmsg.txt @@ -268,3 +268,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/russian/errmsg.txt b/sql/share/russian/errmsg.txt index a05ecde6808..d8c5cac08d5 100644 --- a/sql/share/russian/errmsg.txt +++ b/sql/share/russian/errmsg.txt @@ -266,3 +266,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/serbian/errmsg.txt b/sql/share/serbian/errmsg.txt index c1c0de779c7..40a2e4cac95 100644 --- a/sql/share/serbian/errmsg.txt +++ b/sql/share/serbian/errmsg.txt @@ -260,3 +260,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/slovak/errmsg.txt b/sql/share/slovak/errmsg.txt index 26d673b847c..9f3cc7ce877 100644 --- a/sql/share/slovak/errmsg.txt +++ b/sql/share/slovak/errmsg.txt @@ -272,3 +272,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/spanish/errmsg.txt b/sql/share/spanish/errmsg.txt index 99a92f63c4e..56d246b9032 100644 --- a/sql/share/spanish/errmsg.txt +++ b/sql/share/spanish/errmsg.txt @@ -265,3 +265,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/swedish/errmsg.txt b/sql/share/swedish/errmsg.txt index c613d205947..84b648f5eca 100644 --- a/sql/share/swedish/errmsg.txt +++ b/sql/share/swedish/errmsg.txt @@ -264,3 +264,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", diff --git a/sql/share/ukrainian/errmsg.txt b/sql/share/ukrainian/errmsg.txt index 6505c3c9cac..1d46b125c8c 100644 --- a/sql/share/ukrainian/errmsg.txt +++ b/sql/share/ukrainian/errmsg.txt @@ -269,3 +269,5 @@ "Illegal mix of collations (%s,%s) and (%s,%s) for operation '%s'", "Can't drop one or more of the requested users" "Can't revoke all privileges, grant for one or more of the requested users" +"Illegal mix of collations (%s,%s), (%s,%s), (%s,%s) for operation '%s'", +"Illegal mix of collations for operation '%s'", |