Mike, Thanks for the quick patch!
We'll take a look. Michele -- Michele M. Morgan, Technical Assistant North of Boston Library Exchange, Danvers Massachusetts [email protected] On Fri, Jan 15, 2016 at 12:58 PM, Mike Rylander <[email protected]> wrote: > Michele, > > I don't have time to put together a branch and tests, but here's a > patch that should does what you want. If I have time in the first > half of next week, I'll branch-ify it. > > -------8<----------- > > diff --git a/Open-ILS/src/sql/Pg/030.schema.metabib.sql > b/Open-ILS/src/sql/Pg/030.schema.metabib.sql > index 212a201..ab78c8f 100644 > --- a/Open-ILS/src/sql/Pg/030.schema.metabib.sql > +++ b/Open-ILS/src/sql/Pg/030.schema.metabib.sql > @@ -1126,16 +1126,9 @@ DECLARE > uri_id INT; > uri_cn_id INT; > uri_map_id INT; > + current_map_owner_list INT[]; > BEGIN > > - -- Clear any URI mappings and call numbers for this bib. > - -- This leads to acn / auricnm inflation, but also enables > - -- old acn/auricnm's to go away and for bibs to be deleted. > - FOR uri_cn_id IN SELECT id FROM asset.call_number WHERE record = > bib_id AND label = '##URI##' AND NOT deleted LOOP > - DELETE FROM asset.uri_call_number_map WHERE call_number = > uri_cn_id; > - DELETE FROM asset.call_number WHERE id = uri_cn_id; > - END LOOP; > - > uris := oils_xpath('//*[@tag="856" and (@ind1="4" or @ind1="1") > and (@ind2="0" or @ind2="1")]',marcxml); > IF ARRAY_UPPER(uris,1) > 0 THEN > FOR i IN 1 .. ARRAY_UPPER(uris, 1) LOOP > @@ -1213,6 +1206,8 @@ BEGIN > INSERT INTO asset.uri_call_number_map > (call_number, uri) VALUES (uri_cn_id, uri_id); > END IF; > > + current_map_owner_list := current_map_owner_list > || uri_cn_id > + > END LOOP; > > END IF; > @@ -1220,6 +1215,20 @@ BEGIN > END LOOP; > END IF; > > + -- Clear any URI mappings and call numbers for this bib > + -- that weren't mapped above. > + FOR uri_cn_id IN > + SELECT id > + FROM asset.call_number > + WHERE record = bib_id > + AND label = '##URI##' > + AND NOT deleted > + AND NOT (id = ANY (current_map_owner_list)) > + LOOP > + DELETE FROM asset.uri_call_number_map WHERE call_number = > uri_cn_id; > + DELETE FROM asset.call_number WHERE id = uri_cn_id; > + END LOOP; > + > RETURN; > END; > $func$ LANGUAGE PLPGSQL; > > -------8<----------- > > HTH, > > -- > Mike Rylander > | President > | Equinox Software, Inc. / The Open Source Experts > | phone: 1-877-OPEN-ILS (673-6457) > | email: [email protected] > | web: http://www.esilibrary.com > > > > On Fri, Jan 15, 2016 at 11:39 AM, Morgan, Michele <[email protected]> > wrote: > > Hi, > > > > We at NOBLE are wrestling with the issues described in this Launchpad > bug: > > > > https://bugs.launchpad.net/evergreen/+bug/1482757 > > > > As described in the bug, each time a record with 856 links is loaded, > > existing URI entries for the matching bib are deleted from the call > number > > table, and a new set it is added. We're looking for thoughts on possible > > approaches to avoid this blanket deletion and addition to the call number > > table, or otherwise preserve the original create dates of the URIs. > > > > Electronic Resources are as much a part of our libraries' collections as > > print resources and we need to be able to provide the same type of > holdings > > reports for these that we do for print items. Right now we are unable to > > provide monthly reports on numbers of electronic resources added or > removed > > since we can't use the create dates from the call number table. > > > > We are happy with the way the electronic resources are represented in the > > catalog. But we are unable to find a way to provide reports our libraries > > need. > > > > Any thoughts on possible approachs to remedy this would be greatly > > appreciated. > > > > Thanks, > > Michele > > > > -- > > Michele M. Morgan, Technical Assistant > > North of Boston Library Exchange, Danvers Massachusetts > > [email protected] > > >
