Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
dc1c9e69
Commit
dc1c9e69
authored
Mar 06, 2017
by
Vicențiu Ciorbaru
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make tokudb report ENOENT when renaming table to nonexistant DB
parent
3da91624
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
13 additions
and
12 deletions
+13
-12
storage/tokudb/ha_tokudb.cc
storage/tokudb/ha_tokudb.cc
+8
-1
storage/tokudb/mysql-test/tokudb/r/dir_per_db_rename_to_nonexisting_schema.result
...t/tokudb/r/dir_per_db_rename_to_nonexisting_schema.result
+4
-6
storage/tokudb/mysql-test/tokudb/t/dir_per_db_rename_to_nonexisting_schema.test
...est/tokudb/t/dir_per_db_rename_to_nonexisting_schema.test
+1
-5
No files found.
storage/tokudb/ha_tokudb.cc
View file @
dc1c9e69
...
...
@@ -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
);
...
...
storage/tokudb/mysql-test/tokudb/r/dir_per_db_rename_to_nonexisting_schema.result
View file @
dc1c9e69
...
...
@@ -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;
storage/tokudb/mysql-test/tokudb/t/dir_per_db_rename_to_nonexisting_schema.test
View file @
dc1c9e69
--
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
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment