summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/sp.result16
-rw-r--r--mysql-test/t/sp.test10
-rw-r--r--sql/sql_parse.cc15
3 files changed, 34 insertions, 7 deletions
diff --git a/mysql-test/r/sp.result b/mysql-test/r/sp.result
index 52b52fbbd24..dcf13e8bc4c 100644
--- a/mysql-test/r/sp.result
+++ b/mysql-test/r/sp.result
@@ -8106,3 +8106,19 @@ DROP PROCEDURE sp;
DROP VIEW v1;
DROP TABLE t1, t2;
# End of 5.5 test
+CREATE PROCEDURE sp() ALTER TABLE non_existing_table OPTIMIZE PARTITION p0;
+CALL sp;
+Table Op Msg_type Msg_text
+test.non_existing_table optimize Error Table 'test.non_existing_table' doesn't exist
+test.non_existing_table optimize status Operation failed
+SELECT 1;
+1
+1
+DROP PROCEDURE sp;
+CREATE PROCEDURE sp() SHOW USER_STATISTICS;
+CALL sp;
+User Total_connections Concurrent_connections Connected_time Busy_time Cpu_time Bytes_received Bytes_sent Binlog_bytes_written Rows_read Rows_sent Rows_deleted Rows_inserted Rows_updated Select_commands Update_commands Other_commands Commit_transactions Rollback_transactions Denied_connections Lost_connections Access_denied Empty_queries
+SELECT 1;
+1
+1
+DROP PROCEDURE sp;
diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test
index fb9da936fdb..58bffab462d 100644
--- a/mysql-test/t/sp.test
+++ b/mysql-test/t/sp.test
@@ -9416,3 +9416,13 @@ DROP VIEW v1;
DROP TABLE t1, t2;
--echo # End of 5.5 test
+
+#MDEV-17610
+CREATE PROCEDURE sp() ALTER TABLE non_existing_table OPTIMIZE PARTITION p0;
+CALL sp;
+SELECT 1;
+DROP PROCEDURE sp;
+CREATE PROCEDURE sp() SHOW USER_STATISTICS;
+CALL sp;
+SELECT 1;
+DROP PROCEDURE sp;
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 95243ead2fe..bb53c116b0c 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -4088,15 +4088,16 @@ create_sp_error:
my_error(ER_SP_BADSELECT, MYF(0), sp->m_qname.str);
goto error;
}
- /*
- If SERVER_MORE_RESULTS_EXISTS is not set,
- then remember that it should be cleared
- */
- bits_to_be_cleared= (~thd->server_status &
- SERVER_MORE_RESULTS_EXISTS);
- thd->server_status|= SERVER_MORE_RESULTS_EXISTS;
}
+ /*
+ If SERVER_MORE_RESULTS_EXISTS is not set,
+ then remember that it should be cleared
+ */
+ bits_to_be_cleared= (~thd->server_status &
+ SERVER_MORE_RESULTS_EXISTS);
+ thd->server_status|= SERVER_MORE_RESULTS_EXISTS;
+
if (check_routine_access(thd, EXECUTE_ACL,
sp->m_db.str, sp->m_name.str, TRUE, FALSE))
{