diff options
author | Sergei Petrunia <psergey@askmonty.org> | 2014-12-06 04:02:30 +0300 |
---|---|---|
committer | Sergei Petrunia <psergey@askmonty.org> | 2014-12-06 04:02:30 +0300 |
commit | 1e3f09f1638e2bdec6029f6c98317d17d7ca76d1 (patch) | |
tree | f1266ae396bcbb1ad3121467f3b7092f70ac2497 | |
parent | 5ee1c25fa8043f81ad744d1c532b8c1dafa3b5ea (diff) | |
download | mariadb-git-1e3f09f1638e2bdec6029f6c98317d17d7ca76d1.tar.gz |
MDEV-7264: Assertion `0' failed in subselect_engine::get_identifier()
Switch EXPLAIN JSON from using subselect_engine::get_identifier()
to the number from Item_subselect::unit.
Remove subselect_union_engine::get_identifier() because it was added
only for EXPLAIN JSON code.
-rw-r--r-- | mysql-test/r/explain_json.result | 35 | ||||
-rw-r--r-- | mysql-test/t/explain_json.test | 12 | ||||
-rw-r--r-- | sql/item_subselect.cc | 8 | ||||
-rw-r--r-- | sql/item_subselect.h | 1 |
4 files changed, 49 insertions, 7 deletions
diff --git a/mysql-test/r/explain_json.result b/mysql-test/r/explain_json.result index 0824132de05..d0a0b8f5be3 100644 --- a/mysql-test/r/explain_json.result +++ b/mysql-test/r/explain_json.result @@ -778,3 +778,38 @@ EXPLAIN } } DROP TABLE t1,t2; +# +# MDEV-7264: Assertion `0' failed in subselect_engine::get_identifier() on EXPLAIN JSON +# +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (1),(2); +CREATE TABLE t2 (b INT); +INSERT INTO t2 VALUES (3),(4); +EXPLAIN FORMAT=JSON SELECT * FROM t1 WHERE a <> ALL ( SELECT b FROM t2 ); +EXPLAIN +{ + "query_block": { + "select_id": 1, + "table": { + "table_name": "t1", + "access_type": "ALL", + "rows": 2, + "filtered": 100, + "attached_condition": "(not(<in_optimizer>(t1.a,t1.a in (subquery#2))))" + }, + "subqueries": [ + { + "query_block": { + "select_id": 2, + "table": { + "table_name": "t2", + "access_type": "ALL", + "rows": 2, + "filtered": 100 + } + } + } + ] + } +} +DROP TABLE t1, t2; diff --git a/mysql-test/t/explain_json.test b/mysql-test/t/explain_json.test index 476cb0d3df6..b4f90392c53 100644 --- a/mysql-test/t/explain_json.test +++ b/mysql-test/t/explain_json.test @@ -167,3 +167,15 @@ EXPLAIN FORMAT=JSON SELECT * FROM t1 AS outer_t1 WHERE a <> ALL ( SELECT a FROM DROP TABLE t1,t2; +--echo # +--echo # MDEV-7264: Assertion `0' failed in subselect_engine::get_identifier() on EXPLAIN JSON +--echo # +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (1),(2); + +CREATE TABLE t2 (b INT); +INSERT INTO t2 VALUES (3),(4); + +EXPLAIN FORMAT=JSON SELECT * FROM t1 WHERE a <> ALL ( SELECT b FROM t2 ); +DROP TABLE t1, t2; + diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc index 1662ba02e0f..32d63628cb5 100644 --- a/sql/item_subselect.cc +++ b/sql/item_subselect.cc @@ -898,10 +898,10 @@ void Item_subselect::print(String *str, enum_query_type query_type) if (query_type == QT_EXPLAIN) { str->append("(subquery#"); - if (engine) + if (unit && unit->first_select()) { char buf[64]; - ll2str(engine->get_identifier(), buf, 10, 0); + ll2str(unit->first_select()->select_number, buf, 10, 0); str->append(buf); } else @@ -3732,10 +3732,6 @@ int subselect_union_engine::exec() return res; } -int subselect_union_engine::get_identifier() -{ - return unit->first_select()->select_number; -} /* Search for at least one row satisfying select condition diff --git a/sql/item_subselect.h b/sql/item_subselect.h index 02e487c82d0..92b269d02f1 100644 --- a/sql/item_subselect.h +++ b/sql/item_subselect.h @@ -871,7 +871,6 @@ public: bool is_executed() const; bool no_rows(); virtual enum_engine_type engine_type() { return UNION_ENGINE; } - int get_identifier(); }; |