summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <gkodinov/kgeorge@magare.gmz>2007-10-30 16:21:17 +0200
committerunknown <gkodinov/kgeorge@magare.gmz>2007-10-30 16:21:17 +0200
commitabdb052bae619338ee233a6118e39b274d0bd3e8 (patch)
tree97ca23ec7ff3ccf148970f5bcf2935d772b8b9f9
parentf97b8e48b8f6ec290f7cc7ca3fe59c33f7cb0d9e (diff)
parent6bbdacae209a1916bdb4d4d4f418d25cb6142d2b (diff)
downloadmariadb-git-abdb052bae619338ee233a6118e39b274d0bd3e8.tar.gz
Merge magare.gmz:/home/kgeorge/mysql/work/B31884-5.0-opt
into magare.gmz:/home/kgeorge/mysql/work/B31884-5.1-opt sql/item_subselect.h: Auto merged mysql-test/r/subselect.result: merged the fix for bug 31884 to 5.1-opt mysql-test/t/subselect.test: merged the fix for bug 31884 to 5.1-opt
-rw-r--r--mysql-test/r/subselect.result11
-rw-r--r--mysql-test/t/subselect.test15
-rw-r--r--sql/item_subselect.h1
3 files changed, 27 insertions, 0 deletions
diff --git a/mysql-test/r/subselect.result b/mysql-test/r/subselect.result
index a25183a0e6d..dd579d5e8a6 100644
--- a/mysql-test/r/subselect.result
+++ b/mysql-test/r/subselect.result
@@ -4139,6 +4139,17 @@ SELECT (SELECT SUM(t1.a) FROM t2 WHERE a=1) FROM t1;
(SELECT SUM(t1.a) FROM t2 WHERE a=1)
3
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.
CREATE TABLE t1 (a int, b int);
INSERT INTO t1 VALUES (2,22),(1,11),(2,22);
diff --git a/mysql-test/t/subselect.test b/mysql-test/t/subselect.test
index 95514fd773e..1bf1dda9b15 100644
--- a/mysql-test/t/subselect.test
+++ b/mysql-test/t/subselect.test
@@ -2987,6 +2987,21 @@ SELECT (SELECT SUM(t1.a) FROM t2 WHERE a!=0) FROM t1;
SELECT (SELECT SUM(t1.a) FROM t2 WHERE a=1) FROM t1;
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.
#
diff --git a/sql/item_subselect.h b/sql/item_subselect.h
index 51ab7b8ad42..de4b1cbdc06 100644
--- a/sql/item_subselect.h
+++ b/sql/item_subselect.h
@@ -307,6 +307,7 @@ public:
double val_real();
String *val_str(String*);
my_decimal *val_decimal(my_decimal *);
+ void update_null_value () { (void) val_bool(); }
bool val_bool();
void top_level_item() { abort_on_null=1; }
inline bool is_top_level_item() { return abort_on_null; }