5.1-security->5.5-security merge
This commit is contained in:
commit
982b18f53e
@ -1846,6 +1846,16 @@ SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a;
|
|||||||
SUBSTRING(a,1,10) LENGTH(a)
|
SUBSTRING(a,1,10) LENGTH(a)
|
||||||
1111111111 1300
|
1111111111 1300
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#57688 Assertion `!table || (!table->write_set || bitmap_is_set(table->write_set, field
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(f1 INT NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (16777214),(0);
|
||||||
|
SELECT COUNT(*) FROM t1 LEFT JOIN t1 t2
|
||||||
|
ON 1 WHERE t2.f1 > 1 GROUP BY t2.f1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
DROP TABLE t1;
|
||||||
# End of 5.1 tests
|
# End of 5.1 tests
|
||||||
#
|
#
|
||||||
# Bug#49771: Incorrect MIN (date) when minimum value is 0000-00-00
|
# Bug#49771: Incorrect MIN (date) when minimum value is 0000-00-00
|
||||||
|
@ -1402,4 +1402,34 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select straight_join `test`.`jt1`.`f1` AS `f1` from `test`.`t1` `jt6` left join (`test`.`t1` `jt3` join `test`.`t1` `jt4` left join `test`.`t1` `jt5` on(1) left join `test`.`t1` `jt2` on(1)) on((`test`.`jt6`.`f1` and 1)) left join `test`.`t1` `jt1` on(1) where 1
|
Note 1003 select straight_join `test`.`jt1`.`f1` AS `f1` from `test`.`t1` `jt6` left join (`test`.`t1` `jt3` join `test`.`t1` `jt4` left join `test`.`t1` `jt5` on(1) left join `test`.`t1` `jt2` on(1)) on((`test`.`jt6`.`f1` and 1)) left join `test`.`t1` `jt1` on(1) where 1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#57688 Assertion `!table || (!table->write_set || bitmap_is_set(table->write_set, field
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (f1 INT NOT NULL, PRIMARY KEY (f1));
|
||||||
|
CREATE TABLE t2 (f1 INT NOT NULL, f2 INT NOT NULL, PRIMARY KEY (f1, f2));
|
||||||
|
INSERT INTO t1 VALUES (4);
|
||||||
|
INSERT INTO t2 VALUES (3, 3);
|
||||||
|
INSERT INTO t2 VALUES (7, 7);
|
||||||
|
EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON t2.f1 = t1.f1
|
||||||
|
WHERE t1.f1 = 4
|
||||||
|
GROUP BY t2.f1, t2.f2;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 system PRIMARY NULL NULL NULL 1 Using temporary; Using filesort
|
||||||
|
1 SIMPLE t2 ref PRIMARY PRIMARY 4 const 1 Using index
|
||||||
|
SELECT * FROM t1 LEFT JOIN t2 ON t2.f1 = t1.f1
|
||||||
|
WHERE t1.f1 = 4
|
||||||
|
GROUP BY t2.f1, t2.f2;
|
||||||
|
f1 f1 f2
|
||||||
|
4 NULL NULL
|
||||||
|
EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON t2.f1 = t1.f1
|
||||||
|
WHERE t1.f1 = 4 AND t2.f1 IS NOT NULL AND t2.f2 IS NOT NULL
|
||||||
|
GROUP BY t2.f1, t2.f2;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 system PRIMARY NULL NULL NULL 1 Using filesort
|
||||||
|
1 SIMPLE t2 ref PRIMARY PRIMARY 4 const 1 Using where; Using index
|
||||||
|
SELECT * FROM t1 LEFT JOIN t2 ON t2.f1 = t1.f1
|
||||||
|
WHERE t1.f1 = 4 AND t2.f1 IS NOT NULL AND t2.f2 IS NOT NULL
|
||||||
|
GROUP BY t2.f1, t2.f2;
|
||||||
|
f1 f1 f2
|
||||||
|
DROP TABLE t1,t2;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -1236,6 +1236,17 @@ SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a;
|
|||||||
SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a;
|
SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#57688 Assertion `!table || (!table->write_set || bitmap_is_set(table->write_set, field
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1(f1 INT NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (16777214),(0);
|
||||||
|
|
||||||
|
SELECT COUNT(*) FROM t1 LEFT JOIN t1 t2
|
||||||
|
ON 1 WHERE t2.f1 > 1 GROUP BY t2.f1;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo # End of 5.1 tests
|
--echo # End of 5.1 tests
|
||||||
|
|
||||||
|
@ -981,4 +981,33 @@ EXPLAIN EXTENDED SELECT STRAIGHT_JOIN jt1.f1 FROM t1 AS jt1
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#57688 Assertion `!table || (!table->write_set || bitmap_is_set(table->write_set, field
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (f1 INT NOT NULL, PRIMARY KEY (f1));
|
||||||
|
CREATE TABLE t2 (f1 INT NOT NULL, f2 INT NOT NULL, PRIMARY KEY (f1, f2));
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (4);
|
||||||
|
INSERT INTO t2 VALUES (3, 3);
|
||||||
|
INSERT INTO t2 VALUES (7, 7);
|
||||||
|
|
||||||
|
EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON t2.f1 = t1.f1
|
||||||
|
WHERE t1.f1 = 4
|
||||||
|
GROUP BY t2.f1, t2.f2;
|
||||||
|
|
||||||
|
SELECT * FROM t1 LEFT JOIN t2 ON t2.f1 = t1.f1
|
||||||
|
WHERE t1.f1 = 4
|
||||||
|
GROUP BY t2.f1, t2.f2;
|
||||||
|
|
||||||
|
EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON t2.f1 = t1.f1
|
||||||
|
WHERE t1.f1 = 4 AND t2.f1 IS NOT NULL AND t2.f2 IS NOT NULL
|
||||||
|
GROUP BY t2.f1, t2.f2;
|
||||||
|
|
||||||
|
SELECT * FROM t1 LEFT JOIN t2 ON t2.f1 = t1.f1
|
||||||
|
WHERE t1.f1 = 4 AND t2.f1 IS NOT NULL AND t2.f2 IS NOT NULL
|
||||||
|
GROUP BY t2.f1, t2.f2;
|
||||||
|
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -8963,13 +8963,6 @@ simplify_joins(JOIN *join, List<TABLE_LIST> *join_list, COND *conds, bool top)
|
|||||||
that reject nulls => the outer join can be replaced by an inner join.
|
that reject nulls => the outer join can be replaced by an inner join.
|
||||||
*/
|
*/
|
||||||
table->outer_join= 0;
|
table->outer_join= 0;
|
||||||
/*
|
|
||||||
Update TABLE::maybe_null field as it could have
|
|
||||||
the value(maybe_null==TRUE) based on the assumption
|
|
||||||
that this join is outer(see setup_table_map() func).
|
|
||||||
*/
|
|
||||||
if (table->table)
|
|
||||||
table->table->maybe_null= FALSE;
|
|
||||||
if (table->on_expr)
|
if (table->on_expr)
|
||||||
{
|
{
|
||||||
/* Add on expression to the where condition. */
|
/* Add on expression to the where condition. */
|
||||||
@ -13446,6 +13439,8 @@ static bool
|
|||||||
list_contains_unique_index(TABLE *table,
|
list_contains_unique_index(TABLE *table,
|
||||||
bool (*find_func) (Field *, void *), void *data)
|
bool (*find_func) (Field *, void *), void *data)
|
||||||
{
|
{
|
||||||
|
if (table->pos_in_table_list->outer_join)
|
||||||
|
return 0;
|
||||||
for (uint keynr= 0; keynr < table->s->keys; keynr++)
|
for (uint keynr= 0; keynr < table->s->keys; keynr++)
|
||||||
{
|
{
|
||||||
if (keynr == table->s->primary_key ||
|
if (keynr == table->s->primary_key ||
|
||||||
@ -13459,7 +13454,7 @@ list_contains_unique_index(TABLE *table,
|
|||||||
key_part < key_part_end;
|
key_part < key_part_end;
|
||||||
key_part++)
|
key_part++)
|
||||||
{
|
{
|
||||||
if (key_part->field->maybe_null() ||
|
if (key_part->field->real_maybe_null() ||
|
||||||
!find_func(key_part->field, data))
|
!find_func(key_part->field, data))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user