Bug #31884: Assertion + crash in subquery in the SELECT clause.
Item_in_subselect's only externally callable method is val_bool(). However the nullability in the wrapper class (Item_in_optimizer) is established by calling the "forbidden" method val_int(). Fixed to use the correct method (val_bool() ) to establish nullability of Item_in_subselect in Item_in_optimizer.
This commit is contained in:
parent
76bf63ba4b
commit
01fe24cd68
@ -4139,4 +4139,15 @@ SELECT (SELECT SUM(t1.a) FROM t2 WHERE a=1) FROM t1;
|
|||||||
(SELECT SUM(t1.a) FROM t2 WHERE a=1)
|
(SELECT SUM(t1.a) FROM t2 WHERE a=1)
|
||||||
3
|
3
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
CREATE TABLE t1 (a1 INT, a2 INT);
|
||||||
|
CREATE TABLE t2 (b1 INT, b2 INT);
|
||||||
|
INSERT INTO t1 VALUES (100, 200);
|
||||||
|
INSERT INTO t1 VALUES (101, 201);
|
||||||
|
INSERT INTO t2 VALUES (101, 201);
|
||||||
|
INSERT INTO t2 VALUES (103, 203);
|
||||||
|
SELECT ((a1,a2) IN (SELECT * FROM t2 WHERE b2 > 0)) IS NULL FROM t1;
|
||||||
|
((a1,a2) IN (SELECT * FROM t2 WHERE b2 > 0)) IS NULL
|
||||||
|
0
|
||||||
|
0
|
||||||
|
DROP TABLE t1, t2;
|
||||||
End of 5.0 tests.
|
End of 5.0 tests.
|
||||||
|
@ -2987,4 +2987,19 @@ SELECT (SELECT SUM(t1.a) FROM t2 WHERE a!=0) FROM t1;
|
|||||||
SELECT (SELECT SUM(t1.a) FROM t2 WHERE a=1) FROM t1;
|
SELECT (SELECT SUM(t1.a) FROM t2 WHERE a=1) FROM t1;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #31884: Assertion + crash in subquery in the SELECT clause.
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a1 INT, a2 INT);
|
||||||
|
CREATE TABLE t2 (b1 INT, b2 INT);
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (100, 200);
|
||||||
|
INSERT INTO t1 VALUES (101, 201);
|
||||||
|
INSERT INTO t2 VALUES (101, 201);
|
||||||
|
INSERT INTO t2 VALUES (103, 203);
|
||||||
|
|
||||||
|
SELECT ((a1,a2) IN (SELECT * FROM t2 WHERE b2 > 0)) IS NULL FROM t1;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
--echo End of 5.0 tests.
|
--echo End of 5.0 tests.
|
||||||
|
@ -306,6 +306,7 @@ public:
|
|||||||
double val_real();
|
double val_real();
|
||||||
String *val_str(String*);
|
String *val_str(String*);
|
||||||
my_decimal *val_decimal(my_decimal *);
|
my_decimal *val_decimal(my_decimal *);
|
||||||
|
void update_null_value () { (void) val_bool(); }
|
||||||
bool val_bool();
|
bool val_bool();
|
||||||
void top_level_item() { abort_on_null=1; }
|
void top_level_item() { abort_on_null=1; }
|
||||||
inline bool is_top_level_item() { return abort_on_null; }
|
inline bool is_top_level_item() { return abort_on_null; }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user