Bug 37987: Speed up downloading reports in .tab format

Downloading SQL report in .tab format was significantly
slower after changes made in bug 37382. Apparently using
HTML::Scrubber to redeclare content variable after
mapping it is slow. Instead sending whole map function
as parameter to module speeds up downloading to couple
of seconds as it was before.

To test:
1. Find or create report that returns several thousand rows
(e.g. SELECT * FROM items LIMIT 4000).
2. Run report and attempt to download it as .tab file.
=> Notice that this takes a lot of time (around 20 seconds).
3. Apply this patch.
4. Download report again.
=> Dowloading should now take couple second.
=> Confirm that the content of .tab file still contains table
data.

Sponsored-by: Koha-Suomi Oy
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 5002a0dac9)
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
Emmi Takkinen 2024-09-24 15:00:10 +03:00 committed by Lucas Gass
parent b82e05de36
commit 42e42bced4
1 changed files with 1 additions and 2 deletions

View File

@ -639,8 +639,7 @@ elsif ($op eq 'export'){
$content .= join("\t", header_cell_values($sth)) . "\n";
$content = $scrubber->scrub( Encode::decode( 'UTF-8', $content ) );
while ( my $row = $sth->fetchrow_arrayref() ) {
$content .= join( "\t", map { $_ // '' } @$row ) . "\n";
$content = $scrubber->scrub( $content );
$content .= $scrubber->scrub( join( "\t", map { $_ // '' } @$row ) ) . "\n";
}
} else {
if ( $format eq 'csv' ) {