summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Petrunia <psergey@askmonty.org>2014-06-26 20:12:18 +0400
committerSergei Petrunia <psergey@askmonty.org>2014-06-26 20:12:18 +0400
commitbe885ebe8c3df78d090c2ad25772959fc2ae9fc9 (patch)
tree0227056380e48fba6876dc12556f577be59888da
parentc6be74458fd478b019ac357371d5aee8925fe012 (diff)
downloadmariadb-git-be885ebe8c3df78d090c2ad25772959fc2ae9fc9.tar.gz
Code cleanup, more tests.
-rw-r--r--mysql-test/r/analyze_stmt.result9
-rw-r--r--mysql-test/t/analyze_stmt.test7
-rw-r--r--sql/sql_parse.cc10
3 files changed, 17 insertions, 9 deletions
diff --git a/mysql-test/r/analyze_stmt.result b/mysql-test/r/analyze_stmt.result
index 256c66ea204..8df6fe5127a 100644
--- a/mysql-test/r/analyze_stmt.result
+++ b/mysql-test/r/analyze_stmt.result
@@ -242,3 +242,12 @@ analyze update t1 set i=8;
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 4 100.00 100.00
drop table t1;
+#
+# Check ANALYZE SELECT INTO
+#
+create table t1 (i int);
+insert into t1 values (1);
+analyze select * from t1 into @var;
+id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
+1 SIMPLE t1 system NULL NULL NULL NULL 1 NULL 100.00 NULL
+drop table t1;
diff --git a/mysql-test/t/analyze_stmt.test b/mysql-test/t/analyze_stmt.test
index d2ec554e825..8bd4ce37dd3 100644
--- a/mysql-test/t/analyze_stmt.test
+++ b/mysql-test/t/analyze_stmt.test
@@ -191,3 +191,10 @@ insert into t1 values (1),(2),(3),(4);
analyze update t1 set i=8;
drop table t1;
+--echo #
+--echo # Check ANALYZE SELECT INTO
+--echo #
+create table t1 (i int);
+insert into t1 values (1);
+analyze select * from t1 into @var;
+drop table t1;
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index e9be2b284a9..78c98d2d7be 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -5256,11 +5256,9 @@ static bool execute_sqlcom_select(THD *thd, TABLE_LIST *all_tables)
}
else
{
- select_result *save_result;
Protocol *save_protocol;
if (lex->analyze_stmt)
{
- save_result= result;
result= new select_send_analyze();
save_protocol= thd->protocol;
thd->protocol= new Protocol_discard(thd);
@@ -5277,16 +5275,10 @@ static bool execute_sqlcom_select(THD *thd, TABLE_LIST *all_tables)
if (lex->analyze_stmt)
{
- result= save_result;
- if (!result && !(result= new select_send()))
- return 1;
delete thd->protocol;
thd->protocol= save_protocol;
if (!res)
- thd->lex->explain->send_explain(thd);
-
- if (result != lex->result)
- delete result;
+ res= thd->lex->explain->send_explain(thd);
}
}
}