diff options
author | unknown <gshchepa/uchum@host.loc> | 2008-05-13 20:27:46 +0500 |
---|---|---|
committer | unknown <gshchepa/uchum@host.loc> | 2008-05-13 20:27:46 +0500 |
commit | 66367aeea83a0cd7f583a0194651a235b63975a9 (patch) | |
tree | 3f906d54df58a21e49a3d2176bd9d4e84389633b /mysql-test/t | |
parent | 65a310fe2a594aca6e73308896763933adb59e3e (diff) | |
download | mariadb-git-66367aeea83a0cd7f583a0194651a235b63975a9.tar.gz |
Fixed bug #36488: regexp returns false matches, concatenating
with previous rows.
The WHERE clause containing expression:
CONCAT(empty_field1, empty_field2, ..., 'literal constant', ...)
REGEXP 'regular expression'
may return wrong matches.
Optimization of the CONCAT function has been fixed.
mysql-test/r/func_concat.result:
Added test case for bug #36488.
mysql-test/t/func_concat.test:
Added test case for bug #36488.
sql/item_strfunc.cc:
Fixed bug #36488.
The Item_func_concat::val_str method is optimized to
use first non-empty argument of the CONCAT function for in-place
result accumulation. This optimization is acceptable if that
first argument is not a constant.
However, current implementation checks this condition only for
the first actual argument of the CONCAT function.
So, the Item_func_concat::val_str method can corrupt values
of, for example, literal strings by appending random data.
The Item_func_concat::val_str method has been modified to take
into account the ability to be modified in-place for the first
non-empty argument.
Diffstat (limited to 'mysql-test/t')
-rw-r--r-- | mysql-test/t/func_concat.test | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/mysql-test/t/func_concat.test b/mysql-test/t/func_concat.test index 5487ad9c56b..f2aa0d004e5 100644 --- a/mysql-test/t/func_concat.test +++ b/mysql-test/t/func_concat.test @@ -68,3 +68,13 @@ create table t1(f1 varchar(6)) charset=utf8; insert into t1 values ("123456"); select concat(f1, 2) a from t1 union select 'x' a from t1; drop table t1; + +# +# Bug #36488: regexp returns false matches, concatenating with previous rows +# +CREATE TABLE t1 (c1 varchar(100), c2 varchar(100)); +INSERT INTO t1 VALUES ('',''), ('','First'), ('Random','Random'); +SELECT * FROM t1 WHERE CONCAT(c1,' ',c2) REGEXP 'First.*'; +DROP TABLE t1; + +--echo # End of 5.0 tests |