Commit f28b9a34 authored by unknown's avatar unknown
Browse files

A fix and a test case for Bug#19308 "REPAIR/OPTIMIZE/ANALYZE

supported in SP but not in PS": just enable them in prepared
statements, the supporting functionality was implemented when
they were enabled in stored procedures.


mysql-test/r/ps.result:
  Bug#19308: test results fixed.
mysql-test/r/ps_1general.result:
  Adjust existing test cases (ANALYZE/OPTIMIZE/REPAIR are now
  allowed in prepared statements.
mysql-test/r/sp-dynamic.result:
  Adjust existing test cases (ANALYZE/OPTIMIZE/REPAIR are now
  allowed in prepared statements.
mysql-test/t/ps.test:
  Add a test case for Bug#19308 "REPAIR/OPTIMIZE/ANALYZE supported 
  in SP but not in PS"
mysql-test/t/ps_1general.test:
  Adjust existing test cases (ANALYZE/OPTIMIZE/REPAIR are now
  allowed in prepared statements.
sql/sql_prepare.cc:
  Enable ANALYZE, OPTIMIZE, REPAIR in prepared statements.
parent ef82f93d
Loading
Loading
Loading
Loading
+101 −0
Original line number Diff line number Diff line
@@ -1056,3 +1056,104 @@ a b
1	9
3	7
drop table t1;
create table t1 (a int);
create table t2 like t1;
create table t3 like t2;
prepare stmt from "repair table t1";
execute stmt;
Table	Op	Msg_type	Msg_text
test.t1	repair	status	OK
execute stmt;
Table	Op	Msg_type	Msg_text
test.t1	repair	status	OK
prepare stmt from "optimize table t1";
execute stmt;
Table	Op	Msg_type	Msg_text
test.t1	optimize	status	OK
execute stmt;
Table	Op	Msg_type	Msg_text
test.t1	optimize	status	Table is already up to date
prepare stmt from "analyze table t1";
execute stmt;
Table	Op	Msg_type	Msg_text
test.t1	analyze	status	Table is already up to date
execute stmt;
Table	Op	Msg_type	Msg_text
test.t1	analyze	status	Table is already up to date
prepare stmt from "repair table t1, t2, t3";
execute stmt;
Table	Op	Msg_type	Msg_text
test.t1	repair	status	OK
test.t2	repair	status	OK
test.t3	repair	status	OK
execute stmt;
Table	Op	Msg_type	Msg_text
test.t1	repair	status	OK
test.t2	repair	status	OK
test.t3	repair	status	OK
prepare stmt from "optimize table t1, t2, t3";
execute stmt;
Table	Op	Msg_type	Msg_text
test.t1	optimize	status	OK
test.t2	optimize	status	OK
test.t3	optimize	status	OK
execute stmt;
Table	Op	Msg_type	Msg_text
test.t1	optimize	status	Table is already up to date
test.t2	optimize	status	Table is already up to date
test.t3	optimize	status	Table is already up to date
prepare stmt from "analyze table t1, t2, t3";
execute stmt;
Table	Op	Msg_type	Msg_text
test.t1	analyze	status	Table is already up to date
test.t2	analyze	status	Table is already up to date
test.t3	analyze	status	Table is already up to date
execute stmt;
Table	Op	Msg_type	Msg_text
test.t1	analyze	status	Table is already up to date
test.t2	analyze	status	Table is already up to date
test.t3	analyze	status	Table is already up to date
prepare stmt from "repair table t1, t4, t3";
execute stmt;
Table	Op	Msg_type	Msg_text
test.t1	repair	status	OK
test.t4	repair	error	Table 'test.t4' doesn't exist
test.t3	repair	status	OK
Warnings:
Error	1146	Table 'test.t4' doesn't exist
execute stmt;
Table	Op	Msg_type	Msg_text
test.t1	repair	status	OK
test.t4	repair	error	Table 'test.t4' doesn't exist
test.t3	repair	status	OK
Warnings:
Error	1146	Table 'test.t4' doesn't exist
prepare stmt from "optimize table t1, t3, t4";
execute stmt;
Table	Op	Msg_type	Msg_text
test.t1	optimize	status	OK
test.t3	optimize	status	OK
test.t4	optimize	error	Table 'test.t4' doesn't exist
Warnings:
Error	1146	Table 'test.t4' doesn't exist
execute stmt;
Table	Op	Msg_type	Msg_text
test.t1	optimize	status	Table is already up to date
test.t3	optimize	status	Table is already up to date
test.t4	optimize	error	Table 'test.t4' doesn't exist
Warnings:
Error	1146	Table 'test.t4' doesn't exist
prepare stmt from "analyze table t4, t1";
execute stmt;
Table	Op	Msg_type	Msg_text
test.t4	analyze	error	Table 'test.t4' doesn't exist
test.t1	analyze	status	Table is already up to date
Warnings:
Error	1146	Table 'test.t4' doesn't exist
execute stmt;
Table	Op	Msg_type	Msg_text
test.t4	analyze	error	Table 'test.t4' doesn't exist
test.t1	analyze	status	Table is already up to date
Warnings:
Error	1146	Table 'test.t4' doesn't exist
deallocate prepare stmt;
+0 −3
Original line number Diff line number Diff line
@@ -422,13 +422,10 @@ ERROR HY000: This command is not supported in the prepared statement protocol ye
prepare stmt1 from ' select * into outfile ''data.txt'' from t1 ';
execute stmt1 ;
prepare stmt1 from ' optimize table t1 ' ;
ERROR HY000: This command is not supported in the prepared statement protocol yet
prepare stmt1 from ' analyze table t1 ' ;
ERROR HY000: This command is not supported in the prepared statement protocol yet
prepare stmt1 from ' checksum table t1 ' ;
ERROR HY000: This command is not supported in the prepared statement protocol yet
prepare stmt1 from ' repair table t1 ' ;
ERROR HY000: This command is not supported in the prepared statement protocol yet
prepare stmt1 from ' restore table t1 from ''data.txt'' ' ;
ERROR HY000: This command is not supported in the prepared statement protocol yet
prepare stmt1 from ' handler t1 open ';
+3 −3
Original line number Diff line number Diff line
@@ -286,12 +286,12 @@ id stmt_text status
1	select 1	supported
2	flush tables	not supported
3	handler t1 open as ha	not supported
4	analyze table t1	not supported
4	analyze table t1	supported
5	check table t1	not supported
6	checksum table t1	not supported
7	check table t1	not supported
8	optimize table t1	not supported
9	repair table t1	not supported
8	optimize table t1	supported
9	repair table t1	supported
10	describe extended select * from t1	supported
11	help help	not supported
12	show databases	supported
+36 −0
Original line number Diff line number Diff line
@@ -1110,4 +1110,40 @@ select * from t1 order by 1+1;

drop table t1;

#
# Bug#19308 "REPAIR/OPTIMIZE/ANALYZE supported in SP but not in PS".
# Add test coverage for the added commands.
#
create table t1 (a int);
create table t2 like t1;
create table t3 like t2;
prepare stmt from "repair table t1";
execute stmt;
execute stmt;
prepare stmt from "optimize table t1";
execute stmt;
execute stmt;
prepare stmt from "analyze table t1";
execute stmt;
execute stmt;
prepare stmt from "repair table t1, t2, t3";
execute stmt;
execute stmt;
prepare stmt from "optimize table t1, t2, t3";
execute stmt;
execute stmt;
prepare stmt from "analyze table t1, t2, t3";
execute stmt;
execute stmt;
prepare stmt from "repair table t1, t4, t3";
execute stmt;
execute stmt;
prepare stmt from "optimize table t1, t3, t4";
execute stmt;
execute stmt;
prepare stmt from "analyze table t4, t1";
execute stmt;
execute stmt;
deallocate prepare stmt;

# End of 5.0 tests
+0 −3
Original line number Diff line number Diff line
@@ -453,13 +453,10 @@ into table t1 fields terminated by ''\t'' ';
prepare stmt1 from ' select * into outfile ''data.txt'' from t1 ';
execute stmt1 ;
## 
--error 1295
prepare stmt1 from ' optimize table t1 ' ;
--error 1295
prepare stmt1 from ' analyze table t1 ' ;
--error 1295
prepare stmt1 from ' checksum table t1 ' ;
--error 1295
prepare stmt1 from ' repair table t1 ' ;
--error 1295
prepare stmt1 from ' restore table t1 from ''data.txt'' ' ;
Loading