Bug 20485: Don't account for items timestamps when items not included
authorDavid Gustafsson <david.gustafsson@ub.gu.se>
Fri, 23 Mar 2018 16:32:30 +0000 (17:32 +0100)
committerNick Clemens <nick@bywatersolutions.com>
Fri, 10 May 2019 17:22:27 +0000 (17:22 +0000)
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 <maryse.simard@inlibro.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

misc/export_records.pl

index b5a7291..9a2bc6b 100755 (executable)
@@ -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 )