diff options
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/r/explain_json.result | 52 | ||||
-rw-r--r-- | mysql-test/t/explain_json.test | 20 |
2 files changed, 71 insertions, 1 deletions
diff --git a/mysql-test/r/explain_json.result b/mysql-test/r/explain_json.result index 0824132de05..e1135298924 100644 --- a/mysql-test/r/explain_json.result +++ b/mysql-test/r/explain_json.result @@ -551,6 +551,7 @@ EXPLAIN { "query_block": { "select_id": 1, + "const_condition": "1", "table": { "table_name": "t1", "access_type": "ALL", @@ -778,3 +779,54 @@ EXPLAIN } } DROP TABLE t1,t2; +# +# Join's constant expression +# +create table t0(a int); +insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +create table t1(a int, b int); +insert into t1 select tbl1.a+10*tbl2.a, 1234 from t0 tbl1, t0 tbl2; +explain format=json +select * from t0 +where +20000 > all (select max(tbl1.a + tbl2.a) +from t1 tbl1, t1 tbl2 where tbl1.b=tbl2.b); +EXPLAIN +{ + "query_block": { + "select_id": 1, + "const_condition": "<not>(<in_optimizer>(20000,(<max>(subquery#2) >= 20000)))", + "table": { + "table_name": "t0", + "access_type": "ALL", + "rows": 10, + "filtered": 100 + }, + "subqueries": [ + { + "query_block": { + "select_id": 2, + "table": { + "table_name": "tbl1", + "access_type": "ALL", + "rows": 100, + "filtered": 100 + }, + "block-nl-join": { + "table": { + "table_name": "tbl2", + "access_type": "ALL", + "rows": 100, + "filtered": 100 + }, + "buffer_type": "flat", + "join_type": "BNL", + "attached_condition": "(tbl2.b = tbl1.b)" + } + } + } + ] + } +} +drop table t1; +drop table t0; diff --git a/mysql-test/t/explain_json.test b/mysql-test/t/explain_json.test index 476cb0d3df6..602d1c06f16 100644 --- a/mysql-test/t/explain_json.test +++ b/mysql-test/t/explain_json.test @@ -2,7 +2,7 @@ # EXPLAIN FORMAT=JSON tests. These are tests developed for MariaDB. # --disable_warnings -drop table if exists t0,t1; +drop table if exists t0,t1,t2; --enable_warnings create table t0(a int); @@ -167,3 +167,21 @@ EXPLAIN FORMAT=JSON SELECT * FROM t1 AS outer_t1 WHERE a <> ALL ( SELECT a FROM DROP TABLE t1,t2; +--echo # +--echo # Join's constant expression +--echo # +create table t0(a int); +insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); + +create table t1(a int, b int); +insert into t1 select tbl1.a+10*tbl2.a, 1234 from t0 tbl1, t0 tbl2; + +explain format=json +select * from t0 +where + 20000 > all (select max(tbl1.a + tbl2.a) + from t1 tbl1, t1 tbl2 where tbl1.b=tbl2.b); + +drop table t1; +drop table t0; + |