mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Fix for bug#44743: Join in combination with concat does not always work
bug#44766: valgrind error when using convert() in a subquery
Problem: input and output buffers may be the same
converting a string to some charset.
That may lead to wrong results/valgrind warnings.
Fix: use different buffers.
mysql-test/r/cast.result:
Fix for bug#44743: Join in combination with concat does not always work
bug#44766: valgrind error when using convert() in a subquery
- test result.
mysql-test/r/func_concat.result:
Fix for bug#44743: Join in combination with concat does not always work
bug#44766: valgrind error when using convert() in a subquery
- test result.
mysql-test/t/cast.test:
Fix for bug#44743: Join in combination with concat does not always work
bug#44766: valgrind error when using convert() in a subquery
- test case.
mysql-test/t/func_concat.test:
Fix for bug#44743: Join in combination with concat does not always work
bug#44766: valgrind error when using convert() in a subquery
- test case.
sql/item.cc:
Fix for bug#44743: Join in combination with concat does not always work
bug#44766: valgrind error when using convert() in a subquery
- comment added.
sql/item_strfunc.cc:
Fix for bug#44743: Join in combination with concat does not always work
bug#44766: valgrind error when using convert() in a subquery
- '&args[0]->str_value' used as a parameter of args[0]->val_str(),
as 'str' may be equal to 'str_value' which we use as the output buffer
converting strings.
sql/sql_string.cc:
Fix for bug#44743: Join in combination with concat does not always work
bug#44766: valgrind error when using convert() in a subquery
- input and output buffers must NOT be the same.
This commit is contained in:
@@ -89,3 +89,34 @@ c1 c2
|
||||
First
|
||||
DROP TABLE t1;
|
||||
# End of 5.0 tests
|
||||
#
|
||||
# Bug #44743: Join in combination with concat does not always work
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
a VARCHAR(100) NOT NULL DEFAULT '0',
|
||||
b VARCHAR(2) NOT NULL DEFAULT '',
|
||||
c VARCHAR(2) NOT NULL DEFAULT '',
|
||||
d TEXT NOT NULL,
|
||||
PRIMARY KEY (a, b, c),
|
||||
KEY (a)
|
||||
) DEFAULT CHARSET=utf8;
|
||||
INSERT INTO t1 VALUES ('gui_A', 'a', 'b', 'str1'),
|
||||
('gui_AB', 'a', 'b', 'str2'), ('gui_ABC', 'a', 'b', 'str3');
|
||||
CREATE TABLE t2 (
|
||||
a VARCHAR(100) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (a)
|
||||
) DEFAULT CHARSET=latin1;
|
||||
INSERT INTO t2 VALUES ('A'), ('AB'), ('ABC');
|
||||
SELECT CONCAT('gui_', t2.a), t1.d FROM t2
|
||||
LEFT JOIN t1 ON t1.a = CONCAT('gui_', t2.a) AND t1.b = 'a' AND t1.c = 'b';
|
||||
CONCAT('gui_', t2.a) d
|
||||
gui_A str1
|
||||
gui_AB str2
|
||||
gui_ABC str3
|
||||
EXPLAIN SELECT CONCAT('gui_', t2.a), t1.d FROM t2
|
||||
LEFT JOIN t1 ON t1.a = CONCAT('gui_', t2.a) AND t1.b = 'a' AND t1.c = 'b';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 index NULL PRIMARY 102 NULL 3 Using index
|
||||
1 SIMPLE t1 eq_ref PRIMARY,a PRIMARY 318 func,const,const 1
|
||||
DROP TABLE t1, t2;
|
||||
# End of 5.1 tests
|
||||
|
||||
Reference in New Issue
Block a user