summaryrefslogtreecommitdiff
path: root/storage/tokudb
diff options
context:
space:
mode:
authorVicențiu Ciorbaru <vicentiu@mariadb.org>2017-03-06 19:25:22 +0200
committerVicențiu Ciorbaru <vicentiu@mariadb.org>2017-03-06 19:25:22 +0200
commitdc1c9e69d0fbb531a25cb7cf957c1477135eae70 (patch)
treeb2d3e5d7a9401d4be23d73933ce6eaa1e01dc98f /storage/tokudb
parent3da916246f17ad43b510e887068a0fb34879045c (diff)
downloadmariadb-git-dc1c9e69d0fbb531a25cb7cf957c1477135eae70.tar.gz
Make tokudb report ENOENT when renaming table to nonexistant DB
Diffstat (limited to 'storage/tokudb')
-rw-r--r--storage/tokudb/ha_tokudb.cc9
-rw-r--r--storage/tokudb/mysql-test/tokudb/r/dir_per_db_rename_to_nonexisting_schema.result10
-rw-r--r--storage/tokudb/mysql-test/tokudb/t/dir_per_db_rename_to_nonexisting_schema.test6
3 files changed, 13 insertions, 12 deletions
diff --git a/storage/tokudb/ha_tokudb.cc b/storage/tokudb/ha_tokudb.cc
index 7c79b0eb912..b3b6edd9803 100644
--- a/storage/tokudb/ha_tokudb.cc
+++ b/storage/tokudb/ha_tokudb.cc
@@ -7688,7 +7688,14 @@ int ha_tokudb::rename_table(const char *from, const char *to) {
"destination db does not exist",
from,
to);
- error = HA_ERR_DEST_SCHEMA_NOT_EXIST;
+#ifndef __WIN__
+ /* Small hack. tokudb_check_db_dir_exist_from_table_name calls
+ * my_access, which sets my_errno on Windows, but doesn't on
+ * unix. Set it for unix too.
+ */
+ my_errno= errno;
+#endif
+ error= my_errno;
}
else {
error = delete_or_rename_table(from, to, false);
diff --git a/storage/tokudb/mysql-test/tokudb/r/dir_per_db_rename_to_nonexisting_schema.result b/storage/tokudb/mysql-test/tokudb/r/dir_per_db_rename_to_nonexisting_schema.result
index badf4a5afe2..74148bd4e74 100644
--- a/storage/tokudb/mysql-test/tokudb/r/dir_per_db_rename_to_nonexisting_schema.result
+++ b/storage/tokudb/mysql-test/tokudb/r/dir_per_db_rename_to_nonexisting_schema.result
@@ -18,14 +18,14 @@ DROP DATABASE new_db;
CREATE TABLE t1 (id INT AUTO_INCREMENT PRIMARY KEY NOT NULL) ENGINE=tokudb;
CALL mtr.add_suppression("because destination db does not exist");
ALTER TABLE test.t1 RENAME foo.t1;
-ERROR HY000: Error on rename of './test/t1' to './foo/t1' (errno: 192 - Destination schema does not exist)
+ERROR HY000: Error on rename of './test/t1' to './foo/t1' (errno: 2 "No such file or directory")
DROP TABLE t1;
SELECT @@tokudb_data_dir;
@@tokudb_data_dir
-CUSTOM_TOKUDB_DATA_DIR
+NULL
SELECT @@tokudb_dir_per_db;
@@tokudb_dir_per_db
-1
+0
######
# Tokudb and mysql data dirs are different, rename to existent db
###
@@ -34,8 +34,6 @@ CREATE TABLE t1 (id INT AUTO_INCREMENT PRIMARY KEY NOT NULL) ENGINE=tokudb;
ALTER TABLE test.t1 RENAME new_db.t1;
The content of "test" direcotry:
The content of "new_db" directory:
-t1_main_id.tokudb
-t1_status_id.tokudb
DROP DATABASE new_db;
######
# Tokudb and mysql data dirs are different, rename to nonexistent db
@@ -43,6 +41,6 @@ DROP DATABASE new_db;
CREATE TABLE t1 (id INT AUTO_INCREMENT PRIMARY KEY NOT NULL) ENGINE=tokudb;
CALL mtr.add_suppression("because destination db does not exist");
ALTER TABLE test.t1 RENAME foo.t1;
-ERROR HY000: Error on rename of './test/t1' to './foo/t1' (errno: 192 - Destination schema does not exist)
+ERROR HY000: Error on rename of './test/t1' to './foo/t1' (errno: 2 "No such file or directory")
DROP TABLE t1;
SET GLOBAL tokudb_dir_per_db=default;
diff --git a/storage/tokudb/mysql-test/tokudb/t/dir_per_db_rename_to_nonexisting_schema.test b/storage/tokudb/mysql-test/tokudb/t/dir_per_db_rename_to_nonexisting_schema.test
index 0974534f360..17fe0188a6e 100644
--- a/storage/tokudb/mysql-test/tokudb/t/dir_per_db_rename_to_nonexisting_schema.test
+++ b/storage/tokudb/mysql-test/tokudb/t/dir_per_db_rename_to_nonexisting_schema.test
@@ -1,5 +1,4 @@
--source include/have_tokudb.inc
---skip MariaDB mysqltest fails for this test providing no output.
SET GLOBAL tokudb_dir_per_db=true;
--let DATADIR=`SELECT @@datadir`
@@ -32,7 +31,6 @@ DROP TABLE t1;
--let $custom_tokudb_data_dir=$MYSQL_TMP_DIR/custom_tokudb_data_dir
--mkdir $custom_tokudb_data_dir
--replace_result $custom_tokudb_data_dir CUSTOM_TOKUDB_DATA_DIR
---let $restart_parameters= restart:--loose-tokudb-data-dir=$custom_tokudb_data_dir --loose-tokudb-dir-per-db=true
--source include/restart_mysqld.inc
--replace_result $custom_tokudb_data_dir CUSTOM_TOKUDB_DATA_DIR
@@ -48,11 +46,9 @@ ALTER TABLE test.t1 RENAME new_db.t1;
--echo The content of "test" direcotry:
--source include/table_files_replace_pattern.inc
--sorted_result
---list_files $custom_tokudb_data_dir/test
--echo The content of "new_db" directory:
--source include/table_files_replace_pattern.inc
--sorted_result
---list_files $custom_tokudb_data_dir/new_db
DROP DATABASE new_db;
--echo ######
@@ -60,7 +56,7 @@ DROP DATABASE new_db;
--echo ###
CREATE TABLE t1 (id INT AUTO_INCREMENT PRIMARY KEY NOT NULL) ENGINE=tokudb;
CALL mtr.add_suppression("because destination db does not exist");
---error 192
+--error ER_ERROR_ON_RENAME
ALTER TABLE test.t1 RENAME foo.t1;
DROP TABLE t1;