summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Petrunia <psergey@askmonty.org>2014-12-06 04:02:30 +0300
committerSergei Petrunia <psergey@askmonty.org>2014-12-06 04:02:30 +0300
commit1e3f09f1638e2bdec6029f6c98317d17d7ca76d1 (patch)
treef1266ae396bcbb1ad3121467f3b7092f70ac2497
parent5ee1c25fa8043f81ad744d1c532b8c1dafa3b5ea (diff)
downloadmariadb-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.result35
-rw-r--r--mysql-test/t/explain_json.test12
-rw-r--r--sql/item_subselect.cc8
-rw-r--r--sql/item_subselect.h1
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();
};