$params{path_suffix} ||= '';
$params{schema} ||= '';
- $params{path} = "sql/Pg-upgrade2" . $params{path_suffix};
+ $params{path} ||= "sql/Pg-upgrade2" . $params{path_suffix};
map { $self->{$_} = $params{$_} } keys %params;
}
sub parse_dbupdate_controls {
- $::lxdebug->enter_sub();
-
my ($self) = @_;
my $form = $self->{form};
$self->{all_controls} = \%all_controls;
- $::lxdebug->leave_sub();
-
return $self;
}
# Remove DOS and Unix style line endings.
chomp;
- # remove comments
- s/--.*$//;
-
for (my $i = 0; $i < length($_); $i++) {
my $char = substr($_, $i, 1);
&& $tag =~ /^ (?= [A-Za-z_] [A-Za-z0-9_]* | ) $/x) { # tag is identifier
push @quote_chars, $char = '$' . $tag . '$';
$i = $tag_end;
+ } elsif ($char eq "-") {
+ if ( substr($_, $i+1, 1) eq "-") {
+ # found a comment outside quote
+ last;
+ }
} elsif ($char eq ";") {
# Query is complete. Send it.
return $errstr // '<unknown database error>' if $self->{return_on_error};
$sth->finish();
$dbh->rollback();
- $form->dberror("The database update/creation did not succeed. " .
- "The file ${filename} containing the following " .
- "query failed:<br>${query}<br>" .
- "The error message was: ${errstr}<br>" .
- "All changes in that file have been reverted.");
+ if (!ref $version_or_control || ref $version_or_control ne 'HASH' || !$version_or_control->{may_fail}) {
+ $form->dberror("The database update/creation did not succeed. " .
+ "The file ${filename} containing the following " .
+ "query failed:<br>${query}<br>" .
+ "The error message was: ${errstr}<br>" .
+ "All changes in that file have been reverted.")
+ }
}
$sth->finish();
my ($self, $dbh, $filename, $version_or_control) = @_;
- my %form_values = map { $_ => $::form->{$_} } qw(dbconnect dbdefault dbhost dbname dboptions dbpasswd dbport dbupdate dbuser login template_object version);
+ my %form_values = %$::form;
$dbh->begin_work;
if (!defined($result)) {
print $::form->parse_html_template("dbupgrade/error", { file => $filename, error => $error });
- ::end_of_request();
+ $::dispatcher->end_request;
} elsif (1 != $result) {
SL::System::InstallationLock->unlock if 2 == $result;
- ::end_of_request();
+ $::dispatcher->end_request;
}
if (ref($version_or_control) eq "HASH") {
}
sub _dbupdate2_calculate_depth {
- $::lxdebug->enter_sub(2);
-
my ($tree, $tag) = @_;
my $node = $tree->{$tag};
- return $::lxdebug->leave_sub(2) if (defined($node->{"depth"}));
+ return if (defined($node->{"depth"}));
my $max_depth = 0;
}
$node->{"depth"} = $max_depth + 1;
-
- $::lxdebug->leave_sub(2);
}
sub sort_dbupdate_controls {