[open-ils-commits] [GIT] Evergreen ILS branch rel_3_2 updated. 62fff9f6313d9252d208a10e32d991079e091596
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_2 has been updated
via 62fff9f6313d9252d208a10e32d991079e091596 (commit)
from c55f64728607f29bcd84544ebc112dd6e997c314 (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 62fff9f6313d9252d208a10e32d991079e091596
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