Loading mysql-test/r/func_concat.result +7 −0 Original line number Diff line number Diff line Loading @@ -82,3 +82,10 @@ a 1234562 x drop table t1; 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.*'; c1 c2 First DROP TABLE t1; # End of 5.0 tests mysql-test/t/func_concat.test +10 −0 Original line number Diff line number Diff line Loading @@ -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 sql/item_strfunc.cc +6 −0 Original line number Diff line number Diff line Loading @@ -294,6 +294,12 @@ String *Item_func_concat::val_str(String *str) { if (!(res=args[i]->val_str(str))) goto null; /* CONCAT accumulates its result in the result of its the first non-empty argument. Because of this we need is_const to be evaluated only for it. */ is_const= args[i]->const_item() || !args[i]->used_tables(); } else { Loading Loading
mysql-test/r/func_concat.result +7 −0 Original line number Diff line number Diff line Loading @@ -82,3 +82,10 @@ a 1234562 x drop table t1; 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.*'; c1 c2 First DROP TABLE t1; # End of 5.0 tests
mysql-test/t/func_concat.test +10 −0 Original line number Diff line number Diff line Loading @@ -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
sql/item_strfunc.cc +6 −0 Original line number Diff line number Diff line Loading @@ -294,6 +294,12 @@ String *Item_func_concat::val_str(String *str) { if (!(res=args[i]->val_str(str))) goto null; /* CONCAT accumulates its result in the result of its the first non-empty argument. Because of this we need is_const to be evaluated only for it. */ is_const= args[i]->const_item() || !args[i]->used_tables(); } else { Loading