mirror of
https://github.com/MariaDB/server.git
synced 2025-04-08 16:25:32 +02:00
MDEV-6046: MySQL Bug#11766684 59851: UNINITIALISED VALUE IN ITEM_FUNC_LIKE::SELECT_OPTIMIZE WITH SUBQUERY AND
This commit is contained in:
parent
67bf16a48b
commit
113333d447
3 changed files with 35 additions and 13 deletions
|
@ -2658,6 +2658,17 @@ group_concat( i ) field
|
|||
NULL NULL
|
||||
8
|
||||
drop table t1;
|
||||
#
|
||||
# Bug#11766684 59851: UNINITIALISED VALUE IN ITEM_FUNC_LIKE::SELECT_OPTIMIZE WITH SUBQUERY AND
|
||||
#
|
||||
CREATE TABLE t2(a INT, KEY(a));
|
||||
INSERT INTO t2 VALUES (1),(2);
|
||||
CREATE TABLE t1(b INT, PRIMARY KEY(b));
|
||||
INSERT INTO t1 VALUES (0),(254);
|
||||
SELECT 1 FROM t2 WHERE a LIKE
|
||||
(SELECT EXPORT_SET(1, b, b, b, b) FROM t1 LIMIT 1);
|
||||
1
|
||||
DROP TABLE t1, t2;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# Start of 5.3 tests
|
||||
|
|
|
@ -1407,6 +1407,18 @@ insert into t1 values (null),(8);
|
|||
select group_concat( i ), make_set( i, 'a', 'b' ) field from t1 group by field;
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#11766684 59851: UNINITIALISED VALUE IN ITEM_FUNC_LIKE::SELECT_OPTIMIZE WITH SUBQUERY AND
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t2(a INT, KEY(a));
|
||||
INSERT INTO t2 VALUES (1),(2);
|
||||
CREATE TABLE t1(b INT, PRIMARY KEY(b));
|
||||
INSERT INTO t1 VALUES (0),(254);
|
||||
SELECT 1 FROM t2 WHERE a LIKE
|
||||
(SELECT EXPORT_SET(1, b, b, b, b) FROM t1 LIMIT 1);
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
--echo #
|
||||
|
|
|
@ -4896,21 +4896,20 @@ longlong Item_func_like::val_int()
|
|||
|
||||
Item_func::optimize_type Item_func_like::select_optimize() const
|
||||
{
|
||||
if (args[1]->const_item() && !args[1]->is_expensive())
|
||||
{
|
||||
String* res2= args[1]->val_str((String *)&cmp.value2);
|
||||
const char *ptr2;
|
||||
if (!args[1]->const_item() || args[1]->is_expensive())
|
||||
return OPTIMIZE_NONE;
|
||||
|
||||
if (!res2 || !(ptr2= res2->ptr()))
|
||||
return OPTIMIZE_NONE;
|
||||
String* res2= args[1]->val_str((String *)&cmp.value2);
|
||||
if (!res2)
|
||||
return OPTIMIZE_NONE;
|
||||
|
||||
if (*ptr2 != wild_many)
|
||||
{
|
||||
if (args[0]->result_type() != STRING_RESULT || *ptr2 != wild_one)
|
||||
return OPTIMIZE_OP;
|
||||
}
|
||||
}
|
||||
return OPTIMIZE_NONE;
|
||||
if (!res2->length()) // Can optimize empty wildcard: column LIKE ''
|
||||
return OPTIMIZE_OP;
|
||||
|
||||
DBUG_ASSERT(res2->ptr());
|
||||
char first= res2->ptr()[0];
|
||||
return (first == wild_many || first == wild_one) ?
|
||||
OPTIMIZE_NONE : OPTIMIZE_OP;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue