mirror of
https://github.com/MariaDB/server.git
synced 2026-05-14 19:07:15 +02:00
Bug #6737: REGEXP gives wrong result with case sensitive collation:
- A new flag MY_CS_CSSORT was introduced for case sensitivity. - Item_func_regexp doesn't substiture ICASE not only for binary collations but for case sensitive collations as well.
This commit is contained in:
parent
5a7198f54d
commit
6d6b38c27f
7 changed files with 51 additions and 22 deletions
|
|
@ -228,6 +228,7 @@ static int add_collation(CHARSET_INFO *cs)
|
|||
}
|
||||
else
|
||||
{
|
||||
uchar *sort_order= all_charsets[cs->number]->sort_order;
|
||||
simple_cs_init_functions(all_charsets[cs->number]);
|
||||
new->mbminlen= 1;
|
||||
new->mbmaxlen= 1;
|
||||
|
|
@ -236,6 +237,16 @@ static int add_collation(CHARSET_INFO *cs)
|
|||
all_charsets[cs->number]->state |= MY_CS_LOADED;
|
||||
}
|
||||
all_charsets[cs->number]->state|= MY_CS_AVAILABLE;
|
||||
|
||||
/*
|
||||
Check if case sensitive sort order: A < a < B.
|
||||
We need MY_CS_FLAG for regex library, and for
|
||||
case sensitivity flag for 5.0 client protocol,
|
||||
to support isCaseSensitive() method in JDBC driver
|
||||
*/
|
||||
if (sort_order && sort_order['A'] < sort_order['a'] &&
|
||||
sort_order['a'] < sort_order['B'])
|
||||
all_charsets[cs->number]->state|= MY_CS_CSSORT;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue