mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
fix for bug #12595 (Escape character has to be exactly one)
mysql-test/r/select.result: results for test of bug 12595 mysql-test/t/select.test: test for bug #12595 sql/item_cmpfunc.cc: check whether the size of the escape string is exactly 1 (bug #12595)
This commit is contained in:
@ -2739,3 +2739,14 @@ DROP TABLE t1,t2;
|
|||||||
select x'10' + 0, X'10' + 0, b'10' + 0, B'10' + 0;
|
select x'10' + 0, X'10' + 0, b'10' + 0, B'10' + 0;
|
||||||
x'10' + 0 X'10' + 0 b'10' + 0 B'10' + 0
|
x'10' + 0 X'10' + 0 b'10' + 0 B'10' + 0
|
||||||
16 16 2 2
|
16 16 2 2
|
||||||
|
CREATE TABLE BUG_12595(a varchar(100));
|
||||||
|
INSERT INTO BUG_12595 VALUES ('hakan%'), ('hakank'), ("ha%an");
|
||||||
|
SELECT * FROM BUG_12595 WHERE a LIKE 'hakan*%' ESCAPE '*';
|
||||||
|
a
|
||||||
|
hakan%
|
||||||
|
SELECT * FROM BUG_12595 WHERE a LIKE 'hakan**%' ESCAPE '**';
|
||||||
|
ERROR HY000: Incorrect arguments to ESCAPE
|
||||||
|
SELECT * FROM BUG_12595 WHERE a LIKE 'ha%%an' ESCAPE '%';
|
||||||
|
a
|
||||||
|
ha%an
|
||||||
|
DROP TABLE BUG_12595;
|
||||||
|
@ -2350,3 +2350,14 @@ DROP TABLE t1,t2;
|
|||||||
#
|
#
|
||||||
|
|
||||||
select x'10' + 0, X'10' + 0, b'10' + 0, B'10' + 0;
|
select x'10' + 0, X'10' + 0, b'10' + 0, B'10' + 0;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG #12595
|
||||||
|
#
|
||||||
|
CREATE TABLE BUG_12595(a varchar(100));
|
||||||
|
INSERT INTO BUG_12595 VALUES ('hakan%'), ('hakank'), ("ha%an");
|
||||||
|
SELECT * FROM BUG_12595 WHERE a LIKE 'hakan*%' ESCAPE '*';
|
||||||
|
-- error 1210
|
||||||
|
SELECT * FROM BUG_12595 WHERE a LIKE 'hakan**%' ESCAPE '**';
|
||||||
|
SELECT * FROM BUG_12595 WHERE a LIKE 'ha%%an' ESCAPE '%';
|
||||||
|
DROP TABLE BUG_12595;
|
||||||
|
@ -2792,8 +2792,14 @@ bool Item_func_like::fix_fields(THD *thd, Item **ref)
|
|||||||
{
|
{
|
||||||
/* If we are on execution stage */
|
/* If we are on execution stage */
|
||||||
String *escape_str= escape_item->val_str(&tmp_value1);
|
String *escape_str= escape_item->val_str(&tmp_value1);
|
||||||
|
/* ESCAPE must be 1 char in length.*/
|
||||||
|
if (escape_str && escape_str->numchars() != 1)
|
||||||
|
{
|
||||||
|
my_error(ER_WRONG_ARGUMENTS,MYF(0),"ESCAPE");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
escape= escape_str ? *(escape_str->ptr()) : '\\';
|
escape= escape_str ? *(escape_str->ptr()) : '\\';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
We could also do boyer-more for non-const items, but as we would have to
|
We could also do boyer-more for non-const items, but as we would have to
|
||||||
recompute the tables for each row it's not worth it.
|
recompute the tables for each row it's not worth it.
|
||||||
|
Reference in New Issue
Block a user