From 42e42bced4ca381554ff655e2f4b985c8f5896dc Mon Sep 17 00:00:00 2001 From: Emmi Takkinen Date: Tue, 24 Sep 2024 15:00:10 +0300 Subject: [PATCH] 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 Signed-off-by: Katrin Fischer (cherry picked from commit 5002a0dac9f2d45e3f781c245ca50f4468d08e37) Signed-off-by: Lucas Gass --- reports/guided_reports.pl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/reports/guided_reports.pl b/reports/guided_reports.pl index 483a984a95..324c83ee5d 100755 --- a/reports/guided_reports.pl +++ b/reports/guided_reports.pl @@ -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' ) {