From 88eb0c5904462bb6cd1b38932b93470f7032f27d Mon Sep 17 00:00:00 2001 From: David Gustafsson Date: Fri, 23 Mar 2018 17:32:30 +0100 Subject: [PATCH] Bug 20485: Don't account for items timestamps when items not included If combining "--dont_export_items" and "--date" options in export_records.pl, don't include items modification/deletion timestamp in biblio query conditions. How to test: 1) Delete or modify a biblio item. 2) Run export_records.pl with "--dont_export_items" and "--date" options with a date value before item was deleted or modified, but after the biblio was modified. 3) The biblio for which an item was changed should not be included in the export. Sponsored-by: Gothenburg University Library Signed-off-by: Maryse Simard Signed-off-by: Marcel de Rooy Signed-off-by: Nick Clemens --- misc/export_records.pl | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/misc/export_records.pl b/misc/export_records.pl index b5a7291492..9a2bc6bc46 100755 --- a/misc/export_records.pl +++ b/misc/export_records.pl @@ -143,21 +143,31 @@ $timestamp = ($timestamp) ? output_pref({ dt => dt_from_string($timestamp), date if ( $record_type eq 'bibs' ) { if ( $timestamp ) { - push @record_ids, $_->{biblionumber} for @{ - $dbh->selectall_arrayref(q| ( - SELECT biblio_metadata.biblionumber - FROM biblio_metadata - LEFT JOIN items USING(biblionumber) - WHERE biblio_metadata.timestamp >= ? - OR items.timestamp >= ? - ) UNION ( - SELECT biblio_metadata.biblionumber - FROM biblio_metadata - LEFT JOIN deleteditems USING(biblionumber) - WHERE biblio_metadata.timestamp >= ? - OR deleteditems.timestamp >= ? - ) |, { Slice => {} }, ( $timestamp ) x 4 ); - }; + if (!$dont_export_items) { + push @record_ids, $_->{biblionumber} for @{ + $dbh->selectall_arrayref(q| ( + SELECT biblio_metadata.biblionumber + FROM biblio_metadata + LEFT JOIN items USING(biblionumber) + WHERE biblio_metadata.timestamp >= ? + OR items.timestamp >= ? + ) UNION ( + SELECT biblio_metadata.biblionumber + FROM biblio_metadata + LEFT JOIN deleteditems USING(biblionumber) + WHERE biblio_metadata.timestamp >= ? + OR deleteditems.timestamp >= ? + ) |, { Slice => {} }, ( $timestamp ) x 4 ); + }; + } else { + push @record_ids, $_->{biblionumber} for @{ + $dbh->selectall_arrayref(q| ( + SELECT biblio_metadata.biblionumber + FROM biblio_metadata + WHERE biblio_metadata.timestamp >= ? + ) |, { Slice => {} }, $timestamp ); + }; + } } else { my $conditions = { ( $starting_biblionumber or $ending_biblionumber ) -- 2.20.1