CREATE TRIGGER norm_sort_label BEFORE INSERT OR UPDATE ON biblio.monograph_part FOR EACH ROW EXECUTE PROCEDURE biblio.normalize_biblio_monograph_part_sortkey();
-CREATE OR REPLACE FUNCTION biblio.set_record_status_in_leader() RETURNS TRIGGER AS $func$
-use strict;
-use MARC::Record;
-use MARC::Field;
-use MARC::File::XML (BinaryEncoding => 'utf8');
-use Unicode::Normalize;
-
-my $old_marc = MARC::Record->new_from_xml($_TD->{new}{marc});
-my $old_leader = $old_marc->leader();
-my $old_status = substr($old_leader,5,1);
-
-my $status;
-if ($_TD->{event} eq 'INSERT') {$status = 'n';}
-elsif ($_TD->{event} eq 'UPDATE' && $_TD->{new}{deleted} eq 't') {$status = 'd';}
-elsif ($_TD->{event} eq 'UPDATE' && $_TD->{new}{deleted} eq 'f') {$status = 'c';}
-
-if ($old_status ne $status) {
- my $marc = MARC::Record->new_from_xml($_TD->{new}{marc});
- my $leader = $marc->leader();
- substr($leader,5,1) = $status;
- $marc->leader($leader);
- my $marc_xml = $marc->as_xml_record();
- $marc_xml = NFC($marc_xml);
- $_TD->{new}{marc} = $marc_xml;
-}
-
-return "MODIFY";
-
-$func$ LANGUAGE PLPERLU;
-
-CREATE TRIGGER set_record_status_in_leader BEFORE INSERT OR UPDATE ON biblio.record_entry FOR EACH ROW EXECUTE PROCEDURE biblio.set_record_status_in_leader();
-
COMMIT;
+++ /dev/null
-BEGIN;
-
-SELECT plan(4);
-
-----------------------------------
--- Setup Test environment and data
-----------------------------------
-
--- create bib 70,000
-INSERT into biblio.record_entry (id, marc, last_xact_id)
- VALUES (70000,
- $$
- <record xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd" xmlns="http://www.loc.gov/MARC21/slim"><leader>00934|jm a2200241 a 4500</leader><controlfield tag="001">03-0003745</controlfield><controlfield tag="005">19991118131708.0</controlfield><controlfield tag="008">971016n nyuuuu eng </controlfield><datafield tag="050" ind1=" " ind2=" "><subfield code="a">4539</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Bartók, Béla,</subfield><subfield code="d">1881-1945.</subfield></datafield><datafield tag="240" ind1=" " ind2=" "><subfield code="t">Concertos,</subfield><subfield code="m">piano,</subfield><subfield code="n">no. 1,</subfield><subfield code="n">Sz. 83</subfield><subfield code="f">(1926) </subfield><subfield code="a">Concertos,</subfield><subfield code="m">piano,</subfield><subfield code="n">no. 1,</subfield><subfield code="n">Sz. 83,</subfield><subfield code="n">(1926)</subfield></datafield><datafield tag="245" ind1=" " ind2=" "><subfield code="a">Piano concerto no. 1 (1926) ; Rhapsody, op. 1 (1904)</subfield></datafield><datafield tag="260" ind1=" " ind2=" "><subfield code="a">New York, NY :</subfield><subfield code="b">Vox</subfield></datafield></record>
- $$,
- 'PGTAP'
- );
-
------------------------------------
--- Test biblio.set_record_status_in_leader()
------------------------------------
-
--- initially the status is undefined so now it should be 'n'
-SELECT is((SELECT SUBSTR(ARRAY_TO_STRING(oils_xpath('//*[local-name()="leader"]/text()',marc),''),6,1) FROM biblio.record_entry WHERE id = 70000), 'n', 'Record is marked new.');
-
--- check to see if it sets to 'c' correctly upon editing
-UPDATE biblio.record_entry SET marc = REPLACE(marc,'piano','dydraulophone') WHERE id = 70000;
-SELECT is((SELECT SUBSTR(ARRAY_TO_STRING(oils_xpath('//*[local-name()="leader"]/text()',marc),''),6,1) FROM biblio.record_entry WHERE id = 70000), 'c', 'Record is marked updated.');
-
--- see if the record correctly marks as deleted 'd'
-UPDATE biblio.record_entry SET deleted = TRUE WHERE id = 70000;
-SELECT is((SELECT SUBSTR(ARRAY_TO_STRING(oils_xpath('//*[local-name()="leader"]/text()',marc),''),6,1) FROM biblio.record_entry WHERE id = 70000), 'd', 'Record is marked deleted.');
-
--- see if the record is correctly set to 'c' when undeleted
-UPDATE biblio.record_entry SET deleted = FALSE WHERE id = 70000;
-SELECT is((SELECT SUBSTR(ARRAY_TO_STRING(oils_xpath('//*[local-name()="leader"]/text()',marc),''),6,1) FROM biblio.record_entry WHERE id = 70000), 'c', 'Record is marked updated.');
-
-SELECT * FROM finish();
-
-ROLLBACK;
+++ /dev/null
-BEGIN;
-
-SELECT evergreen.upgrade_deps_block_check('xxxx', :eg_version);
-
-CREATE OR REPLACE FUNCTION biblio.set_record_status_in_leader() RETURNS TRIGGER AS $func$
-use strict;
-use MARC::Record;
-use MARC::Field;
-use MARC::File::XML (BinaryEncoding => 'utf8');
-use Unicode::Normalize;
-
-my $old_marc = MARC::Record->new_from_xml($_TD->{new}{marc});
-my $old_leader = $old_marc->leader();
-my $old_status = substr($old_leader,5,1);
-
-my $status;
-if ($_TD->{event} eq 'INSERT') {$status = 'n';}
-elsif ($_TD->{event} eq 'UPDATE' && $_TD->{new}{deleted} eq 't') {$status = 'd';}
-elsif ($_TD->{event} eq 'UPDATE' && $_TD->{new}{deleted} eq 'f') {$status = 'c';}
-
-if ($old_status ne $status) {
- my $marc = MARC::Record->new_from_xml($_TD->{new}{marc});
- my $leader = $marc->leader();
- substr($leader,5,1) = $status;
- $marc->leader($leader);
- my $marc_xml = $marc->as_xml_record();
- $marc_xml = NFC($marc_xml);
- $_TD->{new}{marc} = $marc_xml;
-}
-
-return "MODIFY";
-
-$func$ LANGUAGE PLPERLU;
-
-CREATE TRIGGER set_record_status_in_leader BEFORE INSERT OR UPDATE ON biblio.record_entry FOR EACH ROW EXECUTE PROCEDURE biblio.set_record_status_in_leader();
-
-COMMIT;
+++ /dev/null
-MARC Leader Updated on Bib Deletion, Creation and Update
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-There is now a trigger in place on the bibliographic record table that
-will update the Leader/05 when a new record is inserted, when a record
-is updated or deleted. On insert (created new or imported) it will be
-marked as 'n' for new, on update (including undeletion) it will be
-marked 'c' for modified and on deletion will be marked 'd' for deleted.