mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
MDEV-6046: MySQL Bug#11766684 59851: UNINITIALISED VALUE IN ITEM_FUNC_LIKE::SELECT_OPTIMIZE WITH SUBQUERY AND
This commit is contained in:
@@ -2658,6 +2658,17 @@ group_concat( i ) field
|
|||||||
NULL NULL
|
NULL NULL
|
||||||
8
|
8
|
||||||
drop table t1;
|
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
|
End of 5.1 tests
|
||||||
#
|
#
|
||||||
# Start of 5.3 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;
|
select group_concat( i ), make_set( i, 'a', 'b' ) field from t1 group by field;
|
||||||
drop table t1;
|
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 End of 5.1 tests
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
|
@@ -4896,21 +4896,20 @@ longlong Item_func_like::val_int()
|
|||||||
|
|
||||||
Item_func::optimize_type Item_func_like::select_optimize() const
|
Item_func::optimize_type Item_func_like::select_optimize() const
|
||||||
{
|
{
|
||||||
if (args[1]->const_item() && !args[1]->is_expensive())
|
if (!args[1]->const_item() || args[1]->is_expensive())
|
||||||
{
|
return OPTIMIZE_NONE;
|
||||||
|
|
||||||
String* res2= args[1]->val_str((String *)&cmp.value2);
|
String* res2= args[1]->val_str((String *)&cmp.value2);
|
||||||
const char *ptr2;
|
if (!res2)
|
||||||
|
|
||||||
if (!res2 || !(ptr2= res2->ptr()))
|
|
||||||
return OPTIMIZE_NONE;
|
return OPTIMIZE_NONE;
|
||||||
|
|
||||||
if (*ptr2 != wild_many)
|
if (!res2->length()) // Can optimize empty wildcard: column LIKE ''
|
||||||
{
|
|
||||||
if (args[0]->result_type() != STRING_RESULT || *ptr2 != wild_one)
|
|
||||||
return OPTIMIZE_OP;
|
return OPTIMIZE_OP;
|
||||||
}
|
|
||||||
}
|
DBUG_ASSERT(res2->ptr());
|
||||||
return OPTIMIZE_NONE;
|
char first= res2->ptr()[0];
|
||||||
|
return (first == wild_many || first == wild_one) ?
|
||||||
|
OPTIMIZE_NONE : OPTIMIZE_OP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user