Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 16 additions & 7 deletions bin/pt-online-schema-change
Original file line number Diff line number Diff line change
Expand Up @@ -11438,13 +11438,22 @@ sub create_new_table {
$sql =~ s/\s+ENGINE=\S+//;
}
if ( $o->get('data-dir') && !$o->got('remove-data-dir') ) {
if ( (-d $o->get('data-dir')) && (-w $o->get('data-dir')) ){
$sql = insert_data_directory($sql, $o->get('data-dir'));
PTDEBUG && _d("adding data dir ".$o->get('data-dir'));
PTDEBUG && _d("New query\n$sql\n");
} else {
die $o->get('data-dir') . " is not a directory or it is not writable";
}
# The directory must be in innodb_directories
my (undef, $innodb_directories) = $cxn->dbh->selectrow_array("SHOW VARIABLES LIKE 'innodb_directories'");
if ( $innodb_directories ) {
my @dirs = split(/\s*;\s*/, $innodb_directories);
my %dirs_lookup = map { $_ => 1 } @dirs;
if ($dirs_lookup{$o->get('data-dir')}) {
$sql = insert_data_directory($sql, $o->get('data-dir'));
PTDEBUG && _d("adding data dir ".$o->get('data-dir'));
PTDEBUG && _d("New query\n$sql\n");
} else {
die "Data directory " . $o->get('data-dir') . " is not in innodb_directories variable: " . $innodb_directories;
}
} else {
# There is no innodb_directories variable or it is empty
die "Could not get innodb_directories variable from server or it is empty.";
}
}
if ( $o->got('remove-data-dir') ) {
$sql =~ s/DATA DIRECTORY\s*=\s*'.*?'//;
Expand Down
Loading