mirror of
https://github.com/MariaDB/server.git
synced 2026-05-07 15:45:33 +02:00
BINARY charset is now used instead of binary_flag
This commit is contained in:
parent
372b26e778
commit
e823751548
25 changed files with 199 additions and 226 deletions
|
|
@ -128,7 +128,7 @@ int Item_bool_func2::compare_string()
|
|||
if ((res2=args[1]->val_str(&tmp_value2)))
|
||||
{
|
||||
null_value=0;
|
||||
return binary ? stringcmp(res1,res2) : sortcmp(res1,res2);
|
||||
return binary() ? stringcmp(res1,res2) : sortcmp(res1,res2);
|
||||
}
|
||||
}
|
||||
null_value=1;
|
||||
|
|
@ -199,7 +199,7 @@ longlong Item_func_equal::val_int()
|
|||
res2=args[1]->val_str(&tmp_value2);
|
||||
if (!res1 || !res2)
|
||||
return test(res1 == res2);
|
||||
return (binary ? test(stringcmp(res1,res2) == 0) :
|
||||
return (binary() ? test(stringcmp(res1,res2) == 0) :
|
||||
test(sortcmp(res1,res2) == 0));
|
||||
}
|
||||
case REAL_RESULT:
|
||||
|
|
@ -266,7 +266,7 @@ longlong Item_func_strcmp::val_int()
|
|||
null_value=1;
|
||||
return 0;
|
||||
}
|
||||
int value= binary ? stringcmp(a,b) : sortcmp(a,b);
|
||||
int value= binary() ? stringcmp(a,b) : sortcmp(a,b);
|
||||
null_value=0;
|
||||
return !value ? 0 : (value < 0 ? (longlong) -1 : (longlong) 1);
|
||||
}
|
||||
|
|
@ -355,7 +355,7 @@ void Item_func_between::fix_length_and_dec()
|
|||
if (!args[0] || !args[1] || !args[2])
|
||||
return;
|
||||
cmp_type=args[0]->result_type();
|
||||
if (args[0]->binary)
|
||||
if (args[0]->binary())
|
||||
string_compare=stringcmp;
|
||||
else
|
||||
string_compare=sortcmp;
|
||||
|
|
@ -511,21 +511,22 @@ Item_func_if::fix_length_and_dec()
|
|||
if (null1)
|
||||
{
|
||||
cached_result_type= arg2_type;
|
||||
binary= args[2]->binary;
|
||||
set_charset(args[2]->charset());
|
||||
}
|
||||
else if (null2)
|
||||
{
|
||||
cached_result_type= arg1_type;
|
||||
binary= args[1]->binary;
|
||||
set_charset(args[1]->charset());
|
||||
}
|
||||
else if (arg1_type == STRING_RESULT || arg2_type == STRING_RESULT)
|
||||
{
|
||||
cached_result_type = STRING_RESULT;
|
||||
binary=args[1]->binary | args[2]->binary;
|
||||
set_charset( (args[1]->binary() || args[2]->binary()) ?
|
||||
my_charset_bin : args[1]->charset());
|
||||
}
|
||||
else
|
||||
{
|
||||
binary=1; // Number
|
||||
set_charset(my_charset_bin); // Number
|
||||
if (arg1_type == REAL_RESULT || arg2_type == REAL_RESULT)
|
||||
cached_result_type = REAL_RESULT;
|
||||
else
|
||||
|
|
@ -663,7 +664,7 @@ Item *Item_func_case::find_item(String *str)
|
|||
}
|
||||
if ((tmp=args[i]->val_str(str))) // If not null
|
||||
{
|
||||
if (first_expr->binary || args[i]->binary)
|
||||
if (first_expr->binary() || args[i]->binary())
|
||||
{
|
||||
if (stringcmp(tmp,first_expr_str)==0)
|
||||
return args[i+1];
|
||||
|
|
@ -977,7 +978,7 @@ void Item_func_in::fix_length_and_dec()
|
|||
{
|
||||
switch (item->result_type()) {
|
||||
case STRING_RESULT:
|
||||
if (item->binary)
|
||||
if (item->binary())
|
||||
array=new in_string(arg_count,(qsort_cmp) stringcmp); /* purecov: inspected */
|
||||
else
|
||||
array=new in_string(arg_count,(qsort_cmp) sortcmp);
|
||||
|
|
@ -1003,7 +1004,7 @@ void Item_func_in::fix_length_and_dec()
|
|||
{
|
||||
switch (item->result_type()) {
|
||||
case STRING_RESULT:
|
||||
if (item->binary)
|
||||
if (item->binary())
|
||||
in_item= new cmp_item_binary_string;
|
||||
else
|
||||
in_item= new cmp_item_sort_string;
|
||||
|
|
@ -1275,9 +1276,12 @@ longlong Item_func_like::val_int()
|
|||
return 0;
|
||||
}
|
||||
null_value=0;
|
||||
if ((res->charset()->state & MY_CS_BINSORT) ||
|
||||
(res2->charset()->state & MY_CS_BINSORT))
|
||||
set_charset(my_charset_bin);
|
||||
if (canDoTurboBM)
|
||||
return turboBM_matches(res->ptr(), res->length()) ? 1 : 0;
|
||||
if (binary)
|
||||
if (binary())
|
||||
return wild_compare(*res,*res2,escape) ? 0 : 1;
|
||||
else
|
||||
return wild_case_compare(*res,*res2,escape) ? 0 : 1;
|
||||
|
|
@ -1359,7 +1363,9 @@ Item_func_regex::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref)
|
|||
return 1; /* purecov: inspected */
|
||||
with_sum_func=args[0]->with_sum_func || args[1]->with_sum_func;
|
||||
max_length=1; decimals=0;
|
||||
binary=args[0]->binary || args[1]->binary;
|
||||
if (args[0]->binary() || args[1]->binary())
|
||||
set_charset(my_charset_bin);
|
||||
|
||||
used_tables_cache=args[0]->used_tables() | args[1]->used_tables();
|
||||
const_item_cache=args[0]->const_item() && args[1]->const_item();
|
||||
if (!regex_compiled && args[1]->const_item())
|
||||
|
|
@ -1374,7 +1380,7 @@ Item_func_regex::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref)
|
|||
}
|
||||
int error;
|
||||
if ((error=regcomp(&preg,res->c_ptr(),
|
||||
binary ? REG_EXTENDED | REG_NOSUB :
|
||||
binary() ? REG_EXTENDED | REG_NOSUB :
|
||||
REG_EXTENDED | REG_NOSUB | REG_ICASE,
|
||||
res->charset())))
|
||||
{
|
||||
|
|
@ -1421,7 +1427,7 @@ longlong Item_func_regex::val_int()
|
|||
regex_compiled=0;
|
||||
}
|
||||
if (regcomp(&preg,res2->c_ptr(),
|
||||
binary ? REG_EXTENDED | REG_NOSUB :
|
||||
binary() ? REG_EXTENDED | REG_NOSUB :
|
||||
REG_EXTENDED | REG_NOSUB | REG_ICASE,
|
||||
res->charset()))
|
||||
|
||||
|
|
@ -1471,7 +1477,7 @@ void Item_func_like::turboBM_compute_suffixes(int* suff)
|
|||
|
||||
*splm1 = pattern_len;
|
||||
|
||||
if (binary)
|
||||
if (binary())
|
||||
{
|
||||
int i;
|
||||
for (i = pattern_len - 2; i >= 0; i--)
|
||||
|
|
@ -1574,7 +1580,7 @@ void Item_func_like::turboBM_compute_bad_character_shifts()
|
|||
for (i = bmBc; i < end; i++)
|
||||
*i = pattern_len;
|
||||
|
||||
if (binary)
|
||||
if (binary())
|
||||
{
|
||||
for (j = 0; j < plm1; j++)
|
||||
bmBc[pattern[j]] = plm1 - j;
|
||||
|
|
@ -1605,7 +1611,7 @@ bool Item_func_like::turboBM_matches(const char* text, int text_len) const
|
|||
const int tlmpl = text_len - pattern_len;
|
||||
|
||||
/* Searching */
|
||||
if (binary)
|
||||
if (binary())
|
||||
{
|
||||
while (j <= tlmpl)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue