diff options
author | Tor Didriksen <tor.didriksen@sun.com> | 2010-06-23 08:13:34 +0200 |
---|---|---|
committer | Tor Didriksen <tor.didriksen@sun.com> | 2010-06-23 08:13:34 +0200 |
commit | ec537a1ad1d5a328b0f76b0e99f10e782fa48f4d (patch) | |
tree | ff4adc659727033439acc82c9207a6e5b9e250cc /mysql-test | |
parent | ef4c0f68d12ac8d86f57550599a1be24aa9c6bfe (diff) | |
download | mariadb-git-ec537a1ad1d5a328b0f76b0e99f10e782fa48f4d.tar.gz |
Backport of Bug#53236 Segfault in DTCollation::set(DTCollation&)
Don't call member functions for a NIL pointer.
mysql-test/r/subselect4.result:
Add test case.
mysql-test/t/subselect4.test:
Add test case.
sql/sql_select.cc:
If the (virtual) member function clone_item() returns NULL,
there is no substitution to be made, and we don't need to set the collation.
The test was invoking Item_cache::clone_item()
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/r/subselect4.result | 25 | ||||
-rw-r--r-- | mysql-test/t/subselect4.test | 29 |
2 files changed, 54 insertions, 0 deletions
diff --git a/mysql-test/r/subselect4.result b/mysql-test/r/subselect4.result index 482e0045840..dd4bf599ad0 100644 --- a/mysql-test/r/subselect4.result +++ b/mysql-test/r/subselect4.result @@ -59,3 +59,28 @@ FROM t3 WHERE 1 = 0 GROUP BY 1; (SELECT 1 FROM t1,t2 WHERE t2.b > t3.b) DROP TABLE t1,t2,t3; End of 5.0 tests. +# +# Bug#53236 Segfault in DTCollation::set(DTCollation&) +# +CREATE TABLE t1 ( +pk INTEGER AUTO_INCREMENT, +col_varchar VARCHAR(1), +PRIMARY KEY (pk) +) +; +INSERT INTO t1 (col_varchar) +VALUES +('w'), +('m') +; +SELECT table1.pk +FROM ( t1 AS table1 JOIN t1 AS table2 ON (table1.col_varchar = +table2.col_varchar) ) +WHERE ( 1, 2 ) IN ( SELECT SUBQUERY1_t1.pk AS SUBQUERY1_field1, +SUBQUERY1_t1.pk AS SUBQUERY1_field2 +FROM ( t1 AS SUBQUERY1_t1 JOIN t1 AS SUBQUERY1_t2 +ON (SUBQUERY1_t2.col_varchar = +SUBQUERY1_t1.col_varchar) ) ) +; +pk +drop table t1; diff --git a/mysql-test/t/subselect4.test b/mysql-test/t/subselect4.test index 440eca22828..fb0f58bf804 100644 --- a/mysql-test/t/subselect4.test +++ b/mysql-test/t/subselect4.test @@ -62,3 +62,32 @@ FROM t3 WHERE 1 = 0 GROUP BY 1; DROP TABLE t1,t2,t3; --echo End of 5.0 tests. + +--echo # +--echo # Bug#53236 Segfault in DTCollation::set(DTCollation&) +--echo # + +CREATE TABLE t1 ( + pk INTEGER AUTO_INCREMENT, + col_varchar VARCHAR(1), + PRIMARY KEY (pk) +) +; + +INSERT INTO t1 (col_varchar) +VALUES +('w'), +('m') +; + +SELECT table1.pk +FROM ( t1 AS table1 JOIN t1 AS table2 ON (table1.col_varchar = + table2.col_varchar) ) +WHERE ( 1, 2 ) IN ( SELECT SUBQUERY1_t1.pk AS SUBQUERY1_field1, + SUBQUERY1_t1.pk AS SUBQUERY1_field2 + FROM ( t1 AS SUBQUERY1_t1 JOIN t1 AS SUBQUERY1_t2 + ON (SUBQUERY1_t2.col_varchar = + SUBQUERY1_t1.col_varchar) ) ) +; + +drop table t1; |