diff options
author | Vicențiu Ciorbaru <vicentiu@mariadb.org> | 2017-03-06 19:25:22 +0200 |
---|---|---|
committer | Vicențiu Ciorbaru <vicentiu@mariadb.org> | 2017-03-06 19:25:22 +0200 |
commit | dc1c9e69d0fbb531a25cb7cf957c1477135eae70 (patch) | |
tree | b2d3e5d7a9401d4be23d73933ce6eaa1e01dc98f /storage/tokudb | |
parent | 3da916246f17ad43b510e887068a0fb34879045c (diff) | |
download | mariadb-git-dc1c9e69d0fbb531a25cb7cf957c1477135eae70.tar.gz |
Make tokudb report ENOENT when renaming table to nonexistant DB
Diffstat (limited to 'storage/tokudb')
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; |