Skip to content
Open
Show file tree
Hide file tree
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
16 changes: 11 additions & 5 deletions lib/WeBWorK/DB.pm
Original file line number Diff line number Diff line change
Expand Up @@ -359,19 +359,22 @@ sub delete_tables {
sub dump_tables {
my ($self, $dump_dir) = @_;

my $success = 1;
foreach my $table (keys %$self) {
next if $table =~ /^_/; # skip non-table self fields (none yet)
next if $self->{$table}{params}{non_native}; # skip non-native tables
my $schema_obj = $self->{$table};
if ($schema_obj->can("dump_table")) {
my $dump_file = "$dump_dir/$table.sql";
$schema_obj->dump_table($dump_file);
} else {
unless ($schema_obj->can("dump_table")) {
warn "skipping dump of '$table' table: no dump_table method\n";
next;
}
# A course created with an earlier version of WeBWorK may not have every
# table; skip the missing ones rather than counting them as failures.
next unless $schema_obj->tableExists;
$success = 0 unless $schema_obj->dump_table("$dump_dir/$table.sql");
}

return 1;
return $success;
}

sub restore_tables {
Expand All @@ -383,6 +386,9 @@ sub restore_tables {
my $schema_obj = $self->{$table};
if ($schema_obj->can("restore_table")) {
my $dump_file = "$dump_dir/$table.sql";
# Tables absent when the course was archived have no dump file; skip
# them rather than restoring from a nonexistent file.
next unless -e $dump_file;
$schema_obj->restore_table($dump_file);
} else {
warn "skipping restore of '$table' table: no restore_table method\n";
Expand Down
4 changes: 2 additions & 2 deletions lib/WeBWorK/DB/Schema/NewSQL/Std.pm
Original file line number Diff line number Diff line change
Expand Up @@ -200,10 +200,10 @@ sub dump_table {
my $exit = $? >> 8;
my $signal = $? & 127;
my $core = $? & 128;
warn "Warning: Failed to dump table '"
warn "Failed to dump table '"
. $self->sql_table_name
. "' with command '$dump_cmd' (exit=$exit signal=$signal core=$core): $dump_out\n";
warn "This can be expected if the course was created with an earlier version of WeBWorK.";
return 0;
}

return 1;
Expand Down