@@ -, +, @@ $ kshell k$ misc/stage_file.pl --file TestDataImportKoha.mrc k$ misc/commit_file.pl --batch-number 1 --- C4/ImportBatch.pm | 12 +++++++++++- misc/commit_file.pl | 11 ++++------- 2 files changed, 15 insertions(+), 8 deletions(-) --- a/C4/ImportBatch.pm +++ a/C4/ImportBatch.pm @@ -569,6 +569,8 @@ sub BatchCommitRecords { my $batch_id = shift; my $framework = shift; + my $schema = Koha::Database->schema; + # optional callback to monitor status # of job my $progress_interval = 0; @@ -609,9 +611,17 @@ sub BatchCommitRecords { my $rec_num = 0; while (my $rowref = $sth->fetchrow_hashref) { $record_type = $rowref->{'record_type'}; + + # first record, begin transaction + $schema->txn_begin + unless $rec_num; + $rec_num++; + if ($progress_interval and (0 == ($rec_num % $progress_interval))) { - &$progress_callback($rec_num); + # report progress and commit + &$progress_callback($rec_num, $schema); + $schema->txn_begin; } if ($rowref->{'status'} eq 'error' or $rowref->{'status'} eq 'imported') { $num_ignored++; --- a/misc/commit_file.pl +++ a/misc/commit_file.pl @@ -1,7 +1,7 @@ #!/usr/bin/perl -use strict; -use warnings; +use Modern::Perl; + BEGIN { # find Koha's Perl modules # test carefully before changing this @@ -43,8 +43,6 @@ if ($list_batches) { # in future, probably should tie to a real user account C4::Context->set_userenv(0, 'batch', 0, 'batch', 'batch', 'batch', 'batch'); -my $dbh = C4::Context->dbh; -$dbh->{AutoCommit} = 0; if ($batch_number =~ /^\d+$/ and $batch_number > 0) { my $batch = GetImportBatch($batch_number); die "$0: import batch $batch_number does not exist in database\n" unless defined $batch; @@ -57,7 +55,6 @@ if ($batch_number =~ /^\d+$/ and $batch_number > 0) { unless $batch->{'import_status'} eq "staged" or $batch->{'import_status'} eq "reverted"; process_batch($batch_number); } - $dbh->commit(); } else { die "$0: please specify a numeric batch ID\n"; } @@ -128,9 +125,9 @@ _SUMMARY_ sub print_progress_and_commit { - my $recs = shift; + my ( $recs, $schema ) = @_; print "... processed $recs records\n"; - $dbh->commit(); + $schema->txn_commit; } sub print_usage { --