Backport of bug #55564 to 5.0-security
This commit is contained in:
parent
d85c305362
commit
5df7f9bc26
@ -378,4 +378,21 @@ FROM t1,t2 WHERE t1.f1 = t2.f1 ORDER BY t2.f1;
|
||||
MIN(t2.f1) @bar:= (SELECT MIN(t3.f2) FROM t3 WHERE t3.f2 > foo)
|
||||
10 NULL
|
||||
DROP TABLE t1, t2, t3;
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (0),(0);
|
||||
# BUG#55615 : should not crash
|
||||
SELECT (@a:=((SELECT @a:=1 FROM t1 LIMIT 1))) AND COUNT(1) FROM t1 GROUP BY @a;
|
||||
(@a:=((SELECT @a:=1 FROM t1 LIMIT 1))) AND COUNT(1)
|
||||
1
|
||||
1
|
||||
# BUG#55564 : should not crash
|
||||
SELECT IF(
|
||||
@v:=LEAST((SELECT 1 FROM t1 t2 LEFT JOIN t1 ON (@v) GROUP BY t1.a), a),
|
||||
count(*), 1)
|
||||
FROM t1 GROUP BY a LIMIT 1;
|
||||
IF(
|
||||
@v:=LEAST((SELECT 1 FROM t1 t2 LEFT JOIN t1 ON (@v) GROUP BY t1.a), a),
|
||||
count(*), 1)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
|
@ -268,4 +268,24 @@ FROM t1,t2 WHERE t1.f1 = t2.f1 ORDER BY t2.f1;
|
||||
|
||||
DROP TABLE t1, t2, t3;
|
||||
|
||||
|
||||
#
|
||||
# Bug #55615: debug assertion after using variable in assignment and
|
||||
# referred to
|
||||
# Bug #55564: crash with user variables, assignments, joins...
|
||||
#
|
||||
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (0),(0);
|
||||
--echo # BUG#55615 : should not crash
|
||||
SELECT (@a:=((SELECT @a:=1 FROM t1 LIMIT 1))) AND COUNT(1) FROM t1 GROUP BY @a;
|
||||
--echo # BUG#55564 : should not crash
|
||||
SELECT IF(
|
||||
@v:=LEAST((SELECT 1 FROM t1 t2 LEFT JOIN t1 ON (@v) GROUP BY t1.a), a),
|
||||
count(*), 1)
|
||||
FROM t1 GROUP BY a LIMIT 1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -4303,6 +4303,14 @@ longlong Item_func_set_user_var::val_int_result()
|
||||
return entry->val_int(&null_value);
|
||||
}
|
||||
|
||||
bool Item_func_set_user_var::val_bool_result()
|
||||
{
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
check(TRUE);
|
||||
update(); // Store expression
|
||||
return entry->val_int(&null_value) != 0;
|
||||
}
|
||||
|
||||
String *Item_func_set_user_var::str_result(String *str)
|
||||
{
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
|
@ -1300,6 +1300,7 @@ public:
|
||||
my_decimal *val_decimal(my_decimal *);
|
||||
double val_result();
|
||||
longlong val_int_result();
|
||||
bool val_bool_result();
|
||||
String *str_result(String *str);
|
||||
my_decimal *val_decimal_result(my_decimal *);
|
||||
bool is_null_result();
|
||||
|
Loading…
x
Reference in New Issue
Block a user