mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
New messages for 3-adic and N-adic operations
REPLACE() now processed arguments collations according to standard
This commit is contained in:
@ -281,7 +281,9 @@
|
||||
#define ER_WARN_DATA_OUT_OF_RANGE 1262
|
||||
#define ER_WARN_DATA_TRUNCATED 1263
|
||||
#define ER_WARN_USING_OTHER_HANDLER 1264
|
||||
#define ER_CANT_AGGREGATE_COLLATIONS 1265
|
||||
#define ER_CANT_AGGREGATE_2COLLATIONS 1265
|
||||
#define ER_DROP_USER 1266
|
||||
#define ER_REVOKE_GRANTS 1267
|
||||
#define ER_ERROR_MESSAGES 266
|
||||
#define ER_CANT_AGGREGATE_3COLLATIONS 1268
|
||||
#define ER_CANT_AGGREGATE_NCOLLATIONS 1269
|
||||
#define ER_ERROR_MESSAGES 270
|
||||
|
@ -26,7 +26,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);
|
||||
@ -1968,7 +1968,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 +1989,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 +2039,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;
|
||||
|
@ -747,7 +747,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) {}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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'",
|
||||
|
@ -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'",
|
||||
|
@ -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'",
|
||||
|
@ -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'",
|
||||
|
@ -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'",
|
||||
|
@ -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'",
|
||||
|
@ -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'",
|
||||
|
@ -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'",
|
||||
|
@ -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'",
|
||||
|
@ -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'",
|
||||
|
@ -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'",
|
||||
|
@ -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'",
|
||||
|
@ -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'",
|
||||
|
@ -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'",
|
||||
|
@ -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'",
|
||||
|
@ -264,3 +264,5 @@
|
||||
"Combina<6E><61>o ilegal de collations (%s,%s) e (%s,%s) para opera<72><61>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'",
|
||||
|
@ -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'",
|
||||
|
@ -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'",
|
||||
|
@ -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'",
|
||||
|
@ -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'",
|
||||
|
@ -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'",
|
||||
|
@ -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'",
|
||||
|
@ -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'",
|
||||
|
Reference in New Issue
Block a user