[open-ils-commits] [GIT] Evergreen ILS branch rel_3_3 updated. 2a6fae73b7cbeb483885eb108867c2360da5ab28

Evergreen Git git at git.evergreen-ils.org
Fri Aug 2 12:10:57 EDT 2019


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".

The branch, rel_3_3 has been updated
       via  2a6fae73b7cbeb483885eb108867c2360da5ab28 (commit)
      from  cf26a4ac1ec8a171f7ee70894f9163bb9c2f02e8 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 2a6fae73b7cbeb483885eb108867c2360da5ab28
Author: Rogan Hamby <rogan.hamby at gmail.com>
Date:   Fri Mar 9 08:38:06 2018 -0500

    LP#1650409: improve authority_control_fields.pl's --all and --days_back processing
    
    When --all is used, the list of bibliographic records to process is now
    retrieved via a direct database query instead of using open-ils.storage,
    avoiding a potential timeout.
    
    The query used to fetch records when --days_back is used now fetches
    all records that were edited up to the specified number of days
    ago. Prior to this patch, --days_back ended up fetching records
    created on the current day and records edited on the --days_back
    day, skipping any that were updated in between.
    
    Signed-off-by: Rogan Hamby <rogan.hamby at gmail.com>
    Signed-off-by: Jane Sandberg <sandbej at linnbenton.edu>
    Signed-off-by: Galen Charlton <gmc at equinoxinitiative.org>

diff --git a/Open-ILS/src/support-scripts/authority_control_fields.pl.in b/Open-ILS/src/support-scripts/authority_control_fields.pl.in
index 157ea91d1e..3b80cf631a 100755
--- a/Open-ILS/src/support-scripts/authority_control_fields.pl.in
+++ b/Open-ILS/src/support-scripts/authority_control_fields.pl.in
@@ -36,6 +36,7 @@ my ($start_id, $end_id, $refresh);
 my ($days_back);
 my $bootstrap = '@sysconfdir@/opensrf_core.xml';
 my @records;
+my $idstatement;
 
 my %options;
 my $result = GetOptions(
@@ -64,25 +65,8 @@ Fieldmapper->import(IDL => OpenSRF::Utils::SettingsClient->new->config_value("ID
 # must be loaded and initialized after the IDL is parsed
 use OpenILS::Utils::CStoreEditor;
 OpenILS::Utils::CStoreEditor::init();
-
 my $e = OpenILS::Utils::CStoreEditor->new;
 my $undeleted;
-if ($options{all}) {
-    # get a list of all non-deleted records from Evergreen
-    # open-ils.cstore open-ils.cstore.direct.biblio.record_entry.id_list.atomic {"deleted":"f"}
-    $undeleted = $e->request( 
-        'open-ils.cstore.direct.biblio.record_entry.id_list.atomic', 
-        [{deleted => 'f'}, {id => { '>' => 0}}]
-    );
-    @records = @$undeleted;
-}
-
-if ($start_id and $end_id) {
-    @records = ($start_id .. $end_id);
-}
-
-if (defined $days_back) { 
- at records=();
 
 # Grab DB information from local settings
 my $sc = OpenSRF::Utils::SettingsClient->new;
@@ -96,17 +80,39 @@ if (!$db_name) {
 }
 my $db_user = $sc->config_value( reporter => setup => database => 'user' );
 my $db_pw = $sc->config_value( reporter => setup => database => 'pw' );
-
 die "Unable to retrieve database connection information from the settings server" unless ($db_driver && $db_host && $db_port && $db_name && $db_user);
-
 my $dsn = "dbi:" . $db_driver . ":dbname=" . $db_name .';host=' . $db_host . ';port=' . $db_port;
 my $dbh = DBI->connect($dsn,$db_user,$db_pw, {AutoCommit => 1, pg_enable_utf8 => 1, RaiseError => 1}) or die "database connection error";
 
-# SQL Used to gather a list of ID's
-my $idstatement = $dbh->prepare("SELECT DISTINCT(id) AS id FROM biblio.record_entry where (date(create_date) = date(now()) or date(edit_date) = date((NOW() - '$days_back day'::interval)))");
+if ($options{all}) {
+    @records=();
+
+    # SQL Used to gather a list of ID's
+    $idstatement = $dbh->prepare("SELECT DISTINCT(id) AS id FROM biblio.record_entry
+         WHERE deleted IS FALSE ORDER BY ID DESC");
+
+    # Load the list of ID's into the records array
+    $idstatement->execute();
+    while (my $ref = $idstatement->fetchrow_hashref()) {
+        my $id_ref = $ref->{"id"};   # the column name in our sql query is "id"
+        push(@records, $id_ref);
+    }
+}
+
+if ($start_id and $end_id) {
+    @records = ($start_id .. $end_id);
+}
+
+if (defined $days_back) {
+    @records=();
+
+    # SQL Used to gather a list of ID's
+    $idstatement = $dbh->prepare("SELECT DISTINCT(id) AS id FROM biblio.record_entry
+         WHERE deleted IS FALSE AND date(edit_date) >= date((NOW() - '$days_back day'::interval))
+	 ORDER BY ID DESC");
 
-# Load the list of ID's into the records array
-$idstatement->execute();
+    # Load the list of ID's into the records array
+    $idstatement->execute();
     while (my $ref = $idstatement->fetchrow_hashref()) {
         my $id_ref = $ref->{"id"};   # the column name in our sql query is "id"
         push(@records, $id_ref);
@@ -385,8 +391,11 @@ my %controllees = (
     },
 );
 
+my $rec_count = @records;
+my $i = 0;
 foreach my $rec_id (@records) {
-    # print "$rec_id\n";
+    $i++;
+    #print "record: $rec_id $i of $rec_count\n";
 
     # State variable; was the record changed?
     my $changed = 0;

-----------------------------------------------------------------------

Summary of changes:
 .../support-scripts/authority_control_fields.pl.in | 57 +++++++++++++---------
 1 file changed, 33 insertions(+), 24 deletions(-)


hooks/post-receive
-- 
Evergreen ILS


More information about the open-ils-commits mailing list