#At file:///opt/local/work/mysql-6.0-runtime/
2646 Konstantin Osipov 2008-06-04 [merge]
Merge.
added:
mysql-test/r/drop-no_root.result
mysql-test/t/drop-no_root.test
modified:
sql/sql_db.cc
=== added file 'mysql-test/r/drop-no_root.result'
--- a/mysql-test/r/drop-no_root.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/drop-no_root.result 2008-05-29 17:04:06 +0000
@@ -0,0 +1,27 @@
+
+# --
+# -- Bug#26704: Failing DROP DATABASE brings mysql-client out of sync.
+# --
+
+DROP DATABASE IF EXISTS mysql_test;
+
+CREATE DATABASE mysql_test;
+CREATE TABLE mysql_test.t1(c INT);
+use mysql_test;
+
+chmod 000 mysql_test/t1.frm
+
+DROP DATABASE mysql_test;
+ERROR HY000: Error dropping database (can't rmdir './mysql_test', errno: 39)
+
+SELECT DATABASE();
+DATABASE()
+mysql_test
+
+rm mysql_test/t1.MYD mysql_test/t1.MYI
+
+DROP DATABASE mysql_test;
+
+use test;
+
+# -- End of Bug#26704.
=== added file 'mysql-test/t/drop-no_root.test'
--- a/mysql-test/t/drop-no_root.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/drop-no_root.test 2008-05-29 17:04:06 +0000
@@ -0,0 +1,47 @@
+# This test uses chmod, can't be run with root permissions
+--source include/not_as_root.inc
+
+###########################################################################
+
+--echo
+--echo # --
+--echo # -- Bug#26704: Failing DROP DATABASE brings mysql-client out of sync.
+--echo # --
+
+--echo
+--disable_warnings
+DROP DATABASE IF EXISTS mysql_test;
+--enable_warnings
+
+--echo
+CREATE DATABASE mysql_test;
+CREATE TABLE mysql_test.t1(c INT);
+
+use mysql_test;
+
+--echo
+--echo chmod 000 mysql_test/t1.frm
+--chmod 0000 $MYSQLTEST_VARDIR/master-data/mysql_test/t1.frm
+
+--echo
+--error ER_DB_DROP_RMDIR
+DROP DATABASE mysql_test;
+
+--echo
+SELECT DATABASE();
+
+--echo
+--echo rm mysql_test/t1.MYD mysql_test/t1.MYI
+--exec rm $MYSQLTEST_VARDIR/master-data/mysql_test/t1.MYD
+--exec rm $MYSQLTEST_VARDIR/master-data/mysql_test/t1.MYI
+
+--echo
+DROP DATABASE mysql_test;
+
+--echo
+use test;
+
+--echo
+--echo # -- End of Bug#26704.
+
+###########################################################################
=== modified file 'sql/sql_db.cc'
--- a/sql/sql_db.cc 2008-05-14 13:49:41 +0000
+++ b/sql/sql_db.cc 2008-05-29 17:04:06 +0000
@@ -1010,7 +1010,7 @@ exit:
SELECT DATABASE() in the future). For this we free() thd->db and set
it to 0.
*/
- if (thd->db && !strcmp(thd->db, db))
+ if (thd->db && !strcmp(thd->db, db) && error == 0)
mysql_change_db_impl(thd, NULL, 0, thd->variables.collation_server);
pthread_mutex_unlock(&LOCK_mysql_create_db);
start_waiting_global_read_lock(thd);
| Thread |
|---|
| • bzr commit into mysql-6.0 branch (konstantin:2646) | Konstantin Osipov | 4 Jun |