use SL::Common;
use SL::DBUpgrade2::Base;
use SL::DBUtils;
+use SL::System::Process;
use strict;
$params{path_suffix} ||= '';
$params{schema} ||= '';
- $params{path} ||= "sql/Pg-upgrade2" . $params{path_suffix};
+ $params{path} ||= SL::System::Process->exe_dir . "/sql/Pg-upgrade2" . $params{path_suffix};
map { $self->{$_} = $params{$_} } keys %params;
# 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();
$dbh->begin_work;
# setup dbup_ export vars & run script
- my $old_dbh = $::form->set_standard_dbh($dbh);
my %dbup_myconfig = map { ($_ => $::form->{$_}) } qw(dbname dbuser dbpasswd dbhost dbport dbconnect);
my $result = eval {
SL::DBUpgrade2::Base::execute_script(
my $error = $EVAL_ERROR;
- $::form->set_standard_dbh($old_dbh);
-
$dbh->rollback if 1 != ($result // -1);
return $error if $self->{return_on_error} && (1 != ($result // -1));
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") {
=back
A Perl script can actually implement queries that fail while
-continueing the process by handling the transaction itself, e.g. with
+continuing the process by handling the transaction itself, e.g. with
the following function:
sub do_query {