From eeb671325723706bbd423e00982919333a9f54cc Mon Sep 17 00:00:00 2001 From: Sergey Petrunya Date: Mon, 26 Aug 2013 14:43:52 +0400 Subject: [PATCH] [SHOW] EXPLAIN UPDATE/DELETE - Post-merge fixes (conflict with DELETE .. RETURNING) - Add a testcase with EXPLAIN ... DELETE ... RETURNING --- mysql-test/t/explain_non_select.test | 11 +++++++++++ sql/sql_delete.cc | 14 +++++++------- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/mysql-test/t/explain_non_select.test b/mysql-test/t/explain_non_select.test index 523e041f620..7385ef5d420 100644 --- a/mysql-test/t/explain_non_select.test +++ b/mysql-test/t/explain_non_select.test @@ -84,3 +84,14 @@ explain update t0, t1 set t1.a=t1.a+1 where t0.a = t1.a; drop table t0, t1; + +--echo # +--echo # Try DELETE ... RETURNING ... +--echo # +create table t0 (a int); +insert into t0 values (1),(2),(3),(4); +explain delete from t0 where a=1 returning a; +explain delete from t0 returning a; +drop table t0; + + diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index 92ce69e5686..5655bb12886 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -658,18 +658,18 @@ cleanup: exit_without_my_ok: query_plan.save_query_plan_footprint(thd->lex->query_plan_footprint); - select_send *result; - if (!(result= new select_send())) + select_send *result2; + if (!(result2= new select_send())) return 1; /* purecov: inspected */ List dummy; /* note: looked in 5.6 and they too use a dummy list like this */ - result->prepare(dummy, &thd->lex->unit); - thd->send_explain_fields(result); - int err2= thd->lex->query_plan_footprint->print_explain(result, 0 /* explain flags*/); + result2->prepare(dummy, &thd->lex->unit); + thd->send_explain_fields(result2); + int err2= thd->lex->query_plan_footprint->print_explain(result2, 0 /* explain flags*/); if (err2) - result->abort_result_set(); + result2->abort_result_set(); else - result->send_eof(); + result2->send_eof(); delete select; free_underlaid_joins(thd, select_lex);