From: Bill Erickson Date: Thu, 15 Oct 2015 14:23:36 +0000 (-0400) Subject: More sqitch tracking; master rebase X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=30ad53e02f72d56d912e4e64ef270eda39fd619b;p=working%2FEvergreen.git More sqitch tracking; master rebase data.authority.control_set_authority_field-remove-sf-e schema.filter_authority_browse_search_by_thesaurus data.additional_authority_fixed_fields data.adjust_bills_perm schema.dob-as-date Signed-off-by: Bill Erickson --- diff --git a/Open-ILS/src/sql/schema/deploy/data.additional_authority_fixed_fields.sql b/Open-ILS/src/sql/schema/deploy/data.additional_authority_fixed_fields.sql new file mode 100644 index 0000000000..23b78f0dab --- /dev/null +++ b/Open-ILS/src/sql/schema/deploy/data.additional_authority_fixed_fields.sql @@ -0,0 +1,24 @@ +BEGIN; + +INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('Type', 'ldr', 'AUT', 6, 1, 'z'); +INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('GeoDiv', '008', 'AUT', 6, 1, ' '); +INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('Roman', '008', 'AUT', 7, 1, ' '); +INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('CatLang', '008', 'AUT', 8, 1, ' '); +INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('Kind', '008', 'AUT', 9, 1, ' '); +INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('Rules', '008', 'AUT', 10, 1, ' '); +INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('Subj', '008', 'AUT', 11, 1, ' '); +INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('Series', '008', 'AUT', 12, 1, ' '); +INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('SerNum', '008', 'AUT', 13, 1, ' '); +INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('NameUse', '008', 'AUT', 14, 1, ' '); +INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('SubjUse', '008', 'AUT', 15, 1, ' '); +INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('SerUse', '008', 'AUT', 16, 1, ' '); +INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('TypeSubd', '008', 'AUT', 17, 1, ' '); +INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('GovtAgn', '008', 'AUT', 28, 1, ' '); +INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('RefStatus', '008', 'AUT', 29, 1, ' '); +INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('UpdStatus', '008', 'AUT', 31, 1, ' '); +INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('Name', '008', 'AUT', 32, 1, ' '); +INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('Status', '008', 'AUT', 33, 1, ' '); +INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('ModRec', '008', 'AUT', 38, 1, ' '); +INSERT INTO config.marc21_ff_pos_map (fixed_field, tag, rec_type,start_pos, length, default_val) VALUES ('Source', '008', 'AUT', 39, 1, ' '); + +COMMIT; diff --git a/Open-ILS/src/sql/schema/deploy/data.adjust_bills_perm.sql b/Open-ILS/src/sql/schema/deploy/data.adjust_bills_perm.sql new file mode 100644 index 0000000000..fa9f8b7bef --- /dev/null +++ b/Open-ILS/src/sql/schema/deploy/data.adjust_bills_perm.sql @@ -0,0 +1,15 @@ +BEGIN; + +INSERT INTO permission.perm_list (id, code, description) + VALUES ( + 563, + 'ADJUST_BILLS', + oils_i18n_gettext( + 563, + 'Allow a user to adjust a bill (generally to zero)', + 'ppl', + 'description' + ) + ); + +COMMIT; diff --git a/Open-ILS/src/sql/schema/deploy/data.authority.control_set_authority_field-remove-sf-e.sql b/Open-ILS/src/sql/schema/deploy/data.authority.control_set_authority_field-remove-sf-e.sql new file mode 100644 index 0000000000..505c70ffe8 --- /dev/null +++ b/Open-ILS/src/sql/schema/deploy/data.authority.control_set_authority_field-remove-sf-e.sql @@ -0,0 +1,11 @@ +BEGIN; + +UPDATE authority.control_set_authority_field + SET sf_list = REGEXP_REPLACE( sf_list, 'e', '', 'i') + WHERE tag = '100' AND control_set = 1 AND sf_list ILIKE '%e%'; + +UPDATE authority.control_set_authority_field + SET sf_list = REGEXP_REPLACE( sf_list, 'e', '', 'i') + WHERE tag = '110' AND control_set = 1 AND sf_list ILIKE '%e%'; + +COMMIT; diff --git a/Open-ILS/src/sql/schema/deploy/schema.dob-as-date.sql b/Open-ILS/src/sql/schema/deploy/schema.dob-as-date.sql new file mode 100644 index 0000000000..8953156821 --- /dev/null +++ b/Open-ILS/src/sql/schema/deploy/schema.dob-as-date.sql @@ -0,0 +1,161 @@ +BEGIN; + +DROP VIEW action.all_circulation; +DROP VIEW reporter.demographic; +DROP VIEW auditor.actor_usr_lifecycle; +DROP VIEW action.all_hold_request; + +ALTER TABLE actor.usr ALTER dob TYPE date USING (dob + '3 hours')::date; + +CREATE VIEW auditor.actor_usr_lifecycle AS + SELECT (-1) AS audit_id, now() AS audit_time, + '-'::text AS audit_action, (-1) AS audit_user, (-1) AS audit_ws, + usr.id, usr.card, usr.profile, usr.usrname, usr.email, usr.passwd, + usr.standing, usr.ident_type, usr.ident_value, usr.ident_type2, + usr.ident_value2, usr.net_access_level, usr.photo_url, usr.prefix, + usr.first_given_name, usr.second_given_name, usr.family_name, + usr.suffix, usr.alias, usr.day_phone, usr.evening_phone, + usr.other_phone, usr.mailing_address, usr.billing_address, + usr.home_ou, usr.dob, usr.active, usr.master_account, + usr.super_user, usr.barred, usr.deleted, usr.juvenile, usr.usrgroup, + usr.claims_returned_count, usr.credit_forward_balance, + usr.last_xact_id, usr.alert_message, usr.create_date, + usr.expire_date, usr.claims_never_checked_out_count, + usr.last_update_time + FROM actor.usr +UNION ALL + SELECT actor_usr_history.audit_id, actor_usr_history.audit_time, + actor_usr_history.audit_action, actor_usr_history.audit_user, + actor_usr_history.audit_ws, actor_usr_history.id, + actor_usr_history.card, actor_usr_history.profile, + actor_usr_history.usrname, actor_usr_history.email, + actor_usr_history.passwd, actor_usr_history.standing, + actor_usr_history.ident_type, actor_usr_history.ident_value, + actor_usr_history.ident_type2, actor_usr_history.ident_value2, + actor_usr_history.net_access_level, actor_usr_history.photo_url, + actor_usr_history.prefix, actor_usr_history.first_given_name, + actor_usr_history.second_given_name, actor_usr_history.family_name, + actor_usr_history.suffix, actor_usr_history.alias, + actor_usr_history.day_phone, actor_usr_history.evening_phone, + actor_usr_history.other_phone, actor_usr_history.mailing_address, + actor_usr_history.billing_address, actor_usr_history.home_ou, + actor_usr_history.dob, actor_usr_history.active, + actor_usr_history.master_account, actor_usr_history.super_user, + actor_usr_history.barred, actor_usr_history.deleted, + actor_usr_history.juvenile, actor_usr_history.usrgroup, + actor_usr_history.claims_returned_count, + actor_usr_history.credit_forward_balance, + actor_usr_history.last_xact_id, actor_usr_history.alert_message, + actor_usr_history.create_date, actor_usr_history.expire_date, + actor_usr_history.claims_never_checked_out_count, + actor_usr_history.last_update_time + FROM auditor.actor_usr_history; + +CREATE VIEW reporter.demographic AS + SELECT u.id, u.dob, + CASE + WHEN u.dob IS NULL THEN 'Adult'::text + WHEN age(u.dob) > '18 years'::interval THEN 'Adult'::text + ELSE 'Juvenile'::text + END AS general_division + FROM actor.usr u; + +CREATE VIEW action.all_circulation AS + SELECT aged_circulation.id, aged_circulation.usr_post_code, + aged_circulation.usr_home_ou, aged_circulation.usr_profile, + aged_circulation.usr_birth_year, aged_circulation.copy_call_number, + aged_circulation.copy_location, aged_circulation.copy_owning_lib, + aged_circulation.copy_circ_lib, aged_circulation.copy_bib_record, + aged_circulation.xact_start, aged_circulation.xact_finish, + aged_circulation.target_copy, aged_circulation.circ_lib, + aged_circulation.circ_staff, aged_circulation.checkin_staff, + aged_circulation.checkin_lib, aged_circulation.renewal_remaining, + aged_circulation.grace_period, aged_circulation.due_date, + aged_circulation.stop_fines_time, aged_circulation.checkin_time, + aged_circulation.create_time, aged_circulation.duration, + aged_circulation.fine_interval, aged_circulation.recurring_fine, + aged_circulation.max_fine, aged_circulation.phone_renewal, + aged_circulation.desk_renewal, aged_circulation.opac_renewal, + aged_circulation.duration_rule, + aged_circulation.recurring_fine_rule, + aged_circulation.max_fine_rule, aged_circulation.stop_fines, + aged_circulation.workstation, aged_circulation.checkin_workstation, + aged_circulation.checkin_scan_time, aged_circulation.parent_circ + FROM action.aged_circulation +UNION ALL + SELECT DISTINCT circ.id, + COALESCE(a.post_code, b.post_code) AS usr_post_code, + p.home_ou AS usr_home_ou, p.profile AS usr_profile, + date_part('year'::text, p.dob)::integer AS usr_birth_year, + cp.call_number AS copy_call_number, circ.copy_location, + cn.owning_lib AS copy_owning_lib, cp.circ_lib AS copy_circ_lib, + cn.record AS copy_bib_record, circ.xact_start, circ.xact_finish, + circ.target_copy, circ.circ_lib, circ.circ_staff, + circ.checkin_staff, circ.checkin_lib, circ.renewal_remaining, + circ.grace_period, circ.due_date, circ.stop_fines_time, + circ.checkin_time, circ.create_time, circ.duration, + circ.fine_interval, circ.recurring_fine, circ.max_fine, + circ.phone_renewal, circ.desk_renewal, circ.opac_renewal, + circ.duration_rule, circ.recurring_fine_rule, circ.max_fine_rule, + circ.stop_fines, circ.workstation, circ.checkin_workstation, + circ.checkin_scan_time, circ.parent_circ + FROM action.circulation circ + JOIN asset.copy cp ON circ.target_copy = cp.id + JOIN asset.call_number cn ON cp.call_number = cn.id + JOIN actor.usr p ON circ.usr = p.id + LEFT JOIN actor.usr_address a ON p.mailing_address = a.id + LEFT JOIN actor.usr_address b ON p.billing_address = b.id; + +CREATE OR REPLACE VIEW action.all_hold_request AS + SELECT DISTINCT COALESCE(a.post_code, b.post_code) AS usr_post_code, + p.home_ou AS usr_home_ou, p.profile AS usr_profile, + date_part('year'::text, p.dob)::integer AS usr_birth_year, + ahr.requestor <> ahr.usr AS staff_placed, ahr.id, ahr.request_time, + ahr.capture_time, ahr.fulfillment_time, ahr.checkin_time, + ahr.return_time, ahr.prev_check_time, ahr.expire_time, + ahr.cancel_time, ahr.cancel_cause, ahr.cancel_note, ahr.target, + ahr.current_copy, ahr.fulfillment_staff, ahr.fulfillment_lib, + ahr.request_lib, ahr.selection_ou, ahr.selection_depth, + ahr.pickup_lib, ahr.hold_type, ahr.holdable_formats, + CASE + WHEN ahr.phone_notify IS NULL THEN false + WHEN ahr.phone_notify = ''::text THEN false + ELSE true + END AS phone_notify, + ahr.email_notify, + CASE + WHEN ahr.sms_notify IS NULL THEN false + WHEN ahr.sms_notify = ''::text THEN false + ELSE true + END AS sms_notify, + ahr.frozen, ahr.thaw_date, ahr.shelf_time, ahr.cut_in_line, + ahr.mint_condition, ahr.shelf_expire_time, ahr.current_shelf_lib, + ahr.behind_desk + FROM action.hold_request ahr + JOIN actor.usr p ON ahr.usr = p.id + LEFT JOIN actor.usr_address a ON p.mailing_address = a.id + LEFT JOIN actor.usr_address b ON p.billing_address = b.id +UNION ALL + SELECT aged_hold_request.usr_post_code, aged_hold_request.usr_home_ou, + aged_hold_request.usr_profile, aged_hold_request.usr_birth_year, + aged_hold_request.staff_placed, aged_hold_request.id, + aged_hold_request.request_time, aged_hold_request.capture_time, + aged_hold_request.fulfillment_time, aged_hold_request.checkin_time, + aged_hold_request.return_time, aged_hold_request.prev_check_time, + aged_hold_request.expire_time, aged_hold_request.cancel_time, + aged_hold_request.cancel_cause, aged_hold_request.cancel_note, + aged_hold_request.target, aged_hold_request.current_copy, + aged_hold_request.fulfillment_staff, + aged_hold_request.fulfillment_lib, aged_hold_request.request_lib, + aged_hold_request.selection_ou, aged_hold_request.selection_depth, + aged_hold_request.pickup_lib, aged_hold_request.hold_type, + aged_hold_request.holdable_formats, aged_hold_request.phone_notify, + aged_hold_request.email_notify, aged_hold_request.sms_notify, + aged_hold_request.frozen, aged_hold_request.thaw_date, + aged_hold_request.shelf_time, aged_hold_request.cut_in_line, + aged_hold_request.mint_condition, + aged_hold_request.shelf_expire_time, + aged_hold_request.current_shelf_lib, aged_hold_request.behind_desk + FROM action.aged_hold_request; + +COMMIT; diff --git a/Open-ILS/src/sql/schema/deploy/schema.filter_authority_browse_search_by_thesaurus.sql b/Open-ILS/src/sql/schema/deploy/schema.filter_authority_browse_search_by_thesaurus.sql new file mode 100644 index 0000000000..e1f34e2d41 --- /dev/null +++ b/Open-ILS/src/sql/schema/deploy/schema.filter_authority_browse_search_by_thesaurus.sql @@ -0,0 +1,601 @@ +BEGIN; + +CREATE OR REPLACE FUNCTION authority.extract_thesaurus( marcxml TEXT ) RETURNS TEXT AS $func$ +DECLARE + thes_code TEXT; +BEGIN + thes_code := vandelay.marc21_extract_fixed_field(marcxml,'Subj'); + IF thes_code IS NULL THEN + thes_code := '|'; + ELSIF thes_code = 'z' THEN + thes_code := COALESCE( oils_xpath_string('//*[@tag="040"]/*[@code="f"][1]', marcxml), '' ); + END IF; + RETURN thes_code; +END; +$func$ LANGUAGE PLPGSQL STABLE STRICT; + +-- Intended to be used in a unique index on authority.record_entry like so: +-- CREATE UNIQUE INDEX unique_by_heading_and_thesaurus +-- ON authority.record_entry (heading) +-- WHERE deleted IS FALSE or deleted = FALSE; +CREATE OR REPLACE FUNCTION authority.normalize_heading( marcxml TEXT, no_thesaurus BOOL ) RETURNS TEXT AS $func$ +DECLARE + acsaf authority.control_set_authority_field%ROWTYPE; + tag_used TEXT; + nfi_used TEXT; + sf TEXT; + sf_node TEXT; + tag_node TEXT; + thes_code TEXT; + cset INT; + heading_text TEXT; + tmp_text TEXT; + first_sf BOOL; + auth_id INT DEFAULT COALESCE(NULLIF(oils_xpath_string('//*[@tag="901"]/*[local-name()="subfield" and @code="c"]', marcxml), ''), '0')::INT; +BEGIN + SELECT control_set INTO cset FROM authority.record_entry WHERE id = auth_id; + + IF cset IS NULL THEN + SELECT control_set INTO cset + FROM authority.control_set_authority_field + WHERE tag IN ( SELECT UNNEST(XPATH('//*[starts-with(@tag,"1")]/@tag',marcxml::XML)::TEXT[])) + LIMIT 1; + END IF; + + heading_text := ''; + FOR acsaf IN SELECT * FROM authority.control_set_authority_field WHERE control_set = cset AND main_entry IS NULL LOOP + tag_used := acsaf.tag; + nfi_used := acsaf.nfi; + first_sf := TRUE; + + FOR tag_node IN SELECT unnest(oils_xpath('//*[@tag="'||tag_used||'"]',marcxml)) LOOP + FOR sf_node IN SELECT unnest(oils_xpath('./*[contains("'||acsaf.sf_list||'",@code)]',tag_node)) LOOP + + tmp_text := oils_xpath_string('.', sf_node); + sf := oils_xpath_string('./@code', sf_node); + + IF first_sf AND tmp_text IS NOT NULL AND nfi_used IS NOT NULL THEN + + tmp_text := SUBSTRING( + tmp_text FROM + COALESCE( + NULLIF( + REGEXP_REPLACE( + oils_xpath_string('./@ind'||nfi_used, tag_node), + $$\D+$$, + '', + 'g' + ), + '' + )::INT, + 0 + ) + 1 + ); + + END IF; + + first_sf := FALSE; + + IF tmp_text IS NOT NULL AND tmp_text <> '' THEN + heading_text := heading_text || E'\u2021' || sf || ' ' || tmp_text; + END IF; + END LOOP; + + EXIT WHEN heading_text <> ''; + END LOOP; + + EXIT WHEN heading_text <> ''; + END LOOP; + + IF heading_text <> '' THEN + IF no_thesaurus IS TRUE THEN + heading_text := tag_used || ' ' || public.naco_normalize(heading_text); + ELSE + thes_code := authority.extract_thesaurus(marcxml); + heading_text := tag_used || '_' || COALESCE(nfi_used,'-') || '_' || thes_code || ' ' || public.naco_normalize(heading_text); + END IF; + ELSE + heading_text := 'NOHEADING_' || thes_code || ' ' || MD5(marcxml); + END IF; + + RETURN heading_text; +END; +$func$ LANGUAGE PLPGSQL STABLE STRICT; + +ALTER TABLE authority.simple_heading ADD COLUMN thesaurus TEXT; +CREATE INDEX authority_simple_heading_thesaurus_idx ON authority.simple_heading (thesaurus); + +CREATE OR REPLACE FUNCTION authority.simple_heading_set( marcxml TEXT ) RETURNS SETOF authority.simple_heading AS $func$ +DECLARE + res authority.simple_heading%ROWTYPE; + acsaf authority.control_set_authority_field%ROWTYPE; + tag_used TEXT; + nfi_used TEXT; + sf TEXT; + cset INT; + heading_text TEXT; + joiner_text TEXT; + sort_text TEXT; + tmp_text TEXT; + tmp_xml TEXT; + first_sf BOOL; + auth_id INT DEFAULT COALESCE(NULLIF(oils_xpath_string('//*[@tag="901"]/*[local-name()="subfield" and @code="c"]', marcxml), ''), '0')::INT; +BEGIN + + SELECT control_set INTO cset FROM authority.record_entry WHERE id = auth_id; + + IF cset IS NULL THEN + SELECT control_set INTO cset + FROM authority.control_set_authority_field + WHERE tag IN ( SELECT UNNEST(XPATH('//*[starts-with(@tag,"1")]/@tag',marcxml::XML)::TEXT[])) + LIMIT 1; + END IF; + + res.record := auth_id; + res.thesaurus := authority.extract_thesaurus(marcxml); + + FOR acsaf IN SELECT * FROM authority.control_set_authority_field WHERE control_set = cset LOOP + + res.atag := acsaf.id; + tag_used := acsaf.tag; + nfi_used := acsaf.nfi; + joiner_text := COALESCE(acsaf.joiner, ' '); + + FOR tmp_xml IN SELECT UNNEST(XPATH('//*[@tag="'||tag_used||'"]', marcxml::XML)::TEXT[]) LOOP + + heading_text := COALESCE( + oils_xpath_string('./*[contains("'||acsaf.display_sf_list||'",@code)]', tmp_xml, joiner_text), + '' + ); + + IF nfi_used IS NOT NULL THEN + + sort_text := SUBSTRING( + heading_text FROM + COALESCE( + NULLIF( + REGEXP_REPLACE( + oils_xpath_string('./@ind'||nfi_used, tmp_xml::TEXT), + $$\D+$$, + '', + 'g' + ), + '' + )::INT, + 0 + ) + 1 + ); + + ELSE + sort_text := heading_text; + END IF; + + IF heading_text IS NOT NULL AND heading_text <> '' THEN + res.value := heading_text; + res.sort_value := public.naco_normalize(sort_text); + res.index_vector = to_tsvector('keyword'::regconfig, res.sort_value); + RETURN NEXT res; + END IF; + + END LOOP; + + END LOOP; + + RETURN; +END; + +$func$ LANGUAGE PLPGSQL STABLE STRICT; +-- AFTER UPDATE OR INSERT trigger for authority.record_entry +CREATE OR REPLACE FUNCTION authority.indexing_ingest_or_delete () RETURNS TRIGGER AS $func$ +DECLARE + ashs authority.simple_heading%ROWTYPE; + mbe_row metabib.browse_entry%ROWTYPE; + mbe_id BIGINT; + ash_id BIGINT; +BEGIN + + IF NEW.deleted IS TRUE THEN -- If this authority is deleted + DELETE FROM authority.bib_linking WHERE authority = NEW.id; -- Avoid updating fields in bibs that are no longer visible + DELETE FROM authority.full_rec WHERE record = NEW.id; -- Avoid validating fields against deleted authority records + DELETE FROM authority.simple_heading WHERE record = NEW.id; + -- Should remove matching $0 from controlled fields at the same time? + + -- XXX What do we about the actual linking subfields present in + -- authority records that target this one when this happens? + DELETE FROM authority.authority_linking + WHERE source = NEW.id OR target = NEW.id; + + RETURN NEW; -- and we're done + END IF; + + IF TG_OP = 'UPDATE' THEN -- re-ingest? + PERFORM * FROM config.internal_flag WHERE name = 'ingest.reingest.force_on_same_marc' AND enabled; + + IF NOT FOUND AND OLD.marc = NEW.marc THEN -- don't do anything if the MARC didn't change + RETURN NEW; + END IF; + + -- Unless there's a setting stopping us, propagate these updates to any linked bib records + PERFORM * FROM config.internal_flag WHERE name = 'ingest.disable_authority_auto_update' AND enabled; + + IF NOT FOUND THEN + PERFORM authority.propagate_changes(NEW.id); + END IF; + + DELETE FROM authority.simple_heading WHERE record = NEW.id; + DELETE FROM authority.authority_linking WHERE source = NEW.id; + END IF; + + INSERT INTO authority.authority_linking (source, target, field) + SELECT source, target, field FROM authority.calculate_authority_linking( + NEW.id, NEW.control_set, NEW.marc::XML + ); + + FOR ashs IN SELECT * FROM authority.simple_heading_set(NEW.marc) LOOP + + INSERT INTO authority.simple_heading (record,atag,value,sort_value,thesaurus) + VALUES (ashs.record, ashs.atag, ashs.value, ashs.sort_value, ashs.thesaurus); + ash_id := CURRVAL('authority.simple_heading_id_seq'::REGCLASS); + + SELECT INTO mbe_row * FROM metabib.browse_entry + WHERE value = ashs.value AND sort_value = ashs.sort_value; + + IF FOUND THEN + mbe_id := mbe_row.id; + ELSE + INSERT INTO metabib.browse_entry + ( value, sort_value ) VALUES + ( ashs.value, ashs.sort_value ); + + mbe_id := CURRVAL('metabib.browse_entry_id_seq'::REGCLASS); + END IF; + + INSERT INTO metabib.browse_entry_simple_heading_map (entry,simple_heading) VALUES (mbe_id,ash_id); + + END LOOP; + + -- Flatten and insert the afr data + PERFORM * FROM config.internal_flag WHERE name = 'ingest.disable_authority_full_rec' AND enabled; + IF NOT FOUND THEN + PERFORM authority.reingest_authority_full_rec(NEW.id); + PERFORM * FROM config.internal_flag WHERE name = 'ingest.disable_authority_rec_descriptor' AND enabled; + IF NOT FOUND THEN + PERFORM authority.reingest_authority_rec_descriptor(NEW.id); + END IF; + END IF; + + RETURN NEW; +END; +$func$ LANGUAGE PLPGSQL; + +DROP FUNCTION IF EXISTS authority.atag_search_heading_refs(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.btag_search_heading_refs(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.axis_search_heading_refs(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.atag_search_heading(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.btag_search_heading(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.axis_search_heading(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.simple_heading_search_heading(INT[], TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.atag_search_rank_refs(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.btag_search_rank_refs(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.axis_search_rank_refs(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.atag_search_rank(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.btag_search_rank(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.axis_search_rank(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.simple_heading_search_rank(INT[], TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.atag_browse_top_refs(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.btag_browse_top_refs(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.axis_browse_top_refs(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.atag_browse_top(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.btag_browse_top(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.axis_browse_top(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.simple_heading_browse_top(INT[], TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.atag_browse_center_refs(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.btag_browse_center_refs(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.axis_browse_center_refs(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.atag_browse_center(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.btag_browse_center(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.axis_browse_center(TEXT, TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.simple_heading_browse_center(INT[], TEXT, INT, INT); +DROP FUNCTION IF EXISTS authority.simple_heading_find_pivot(INT[], TEXT); + +-- Support function used to find the pivot for alpha-heading-browse style searching +CREATE OR REPLACE FUNCTION authority.simple_heading_find_pivot( a INT[], q TEXT, thesauruses TEXT DEFAULT '' ) RETURNS TEXT AS $$ +DECLARE + sort_value_row RECORD; + value_row RECORD; + t_term TEXT; +BEGIN + + t_term := public.naco_normalize(q); + + SELECT CASE WHEN ash.sort_value LIKE t_term || '%' THEN 1 ELSE 0 END + + CASE WHEN ash.value LIKE t_term || '%' THEN 1 ELSE 0 END AS rank, + ash.sort_value + INTO sort_value_row + FROM authority.simple_heading ash + WHERE ash.atag = ANY (a) + AND ash.sort_value >= t_term + AND CASE thesauruses + WHEN '' THEN TRUE + ELSE ash.thesaurus = ANY(regexp_split_to_array(thesauruses, ',')) + END + ORDER BY rank DESC, ash.sort_value + LIMIT 1; + + SELECT CASE WHEN ash.sort_value LIKE t_term || '%' THEN 1 ELSE 0 END + + CASE WHEN ash.value LIKE t_term || '%' THEN 1 ELSE 0 END AS rank, + ash.sort_value + INTO value_row + FROM authority.simple_heading ash + WHERE ash.atag = ANY (a) + AND ash.value >= t_term + AND CASE thesauruses + WHEN '' THEN TRUE + ELSE ash.thesaurus = ANY(regexp_split_to_array(thesauruses, ',')) + END + ORDER BY rank DESC, ash.sort_value + LIMIT 1; + + IF value_row.rank > sort_value_row.rank THEN + RETURN value_row.sort_value; + ELSE + RETURN sort_value_row.sort_value; + END IF; +END; +$$ LANGUAGE PLPGSQL; + +CREATE OR REPLACE FUNCTION authority.simple_heading_browse_center( atag_list INT[], q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 9, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ +DECLARE + pivot_sort_value TEXT; + boffset INT DEFAULT 0; + aoffset INT DEFAULT 0; + blimit INT DEFAULT 0; + alimit INT DEFAULT 0; +BEGIN + + pivot_sort_value := authority.simple_heading_find_pivot(atag_list,q,thesauruses); + + IF page = 0 THEN + blimit := pagesize / 2; + alimit := blimit; + + IF pagesize % 2 <> 0 THEN + alimit := alimit + 1; + END IF; + ELSE + blimit := pagesize; + alimit := blimit; + + boffset := pagesize / 2; + aoffset := boffset; + + IF pagesize % 2 <> 0 THEN + boffset := boffset + 1; + END IF; + END IF; + + IF page <= 0 THEN + -- "bottom" half of the browse results + RETURN QUERY + SELECT id FROM ( + SELECT ash.id, + row_number() over () + FROM authority.simple_heading ash + WHERE ash.atag = ANY (atag_list) + AND CASE thesauruses + WHEN '' THEN TRUE + ELSE ash.thesaurus = ANY(regexp_split_to_array(thesauruses, ',')) + END + AND ash.sort_value < pivot_sort_value + ORDER BY ash.sort_value DESC + LIMIT blimit + OFFSET ABS(page) * pagesize - boffset + ) x ORDER BY row_number DESC; + END IF; + + IF page >= 0 THEN + -- "bottom" half of the browse results + RETURN QUERY + SELECT ash.id + FROM authority.simple_heading ash + WHERE ash.atag = ANY (atag_list) + AND CASE thesauruses + WHEN '' THEN TRUE + ELSE ash.thesaurus = ANY(regexp_split_to_array(thesauruses, ',')) + END + AND ash.sort_value >= pivot_sort_value + ORDER BY ash.sort_value + LIMIT alimit + OFFSET ABS(page) * pagesize - aoffset; + END IF; +END; +$$ LANGUAGE PLPGSQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.axis_browse_center( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 9, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_browse_center(authority.axis_authority_tags($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.btag_browse_center( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 9, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_browse_center(authority.btag_authority_tags($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.atag_browse_center( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 9, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_browse_center(authority.atag_authority_tags($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.axis_browse_center_refs( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 9, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_browse_center(authority.axis_authority_tags_refs($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.btag_browse_center_refs( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 9, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_browse_center(authority.btag_authority_tags_refs($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.atag_browse_center_refs( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 9, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_browse_center(authority.atag_authority_tags_refs($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + + +CREATE OR REPLACE FUNCTION authority.simple_heading_browse_top( atag_list INT[], q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ +DECLARE + pivot_sort_value TEXT; +BEGIN + + pivot_sort_value := authority.simple_heading_find_pivot(atag_list,q,thesauruses); + + IF page < 0 THEN + -- "bottom" half of the browse results + RETURN QUERY + SELECT id FROM ( + SELECT ash.id, + row_number() over () + FROM authority.simple_heading ash + WHERE ash.atag = ANY (atag_list) + AND CASE thesauruses + WHEN '' THEN TRUE + ELSE ash.thesaurus = ANY(regexp_split_to_array(thesauruses, ',')) + END + AND ash.sort_value < pivot_sort_value + ORDER BY ash.sort_value DESC + LIMIT pagesize + OFFSET (ABS(page) - 1) * pagesize + ) x ORDER BY row_number DESC; + END IF; + + IF page >= 0 THEN + -- "bottom" half of the browse results + RETURN QUERY + SELECT ash.id + FROM authority.simple_heading ash + WHERE ash.atag = ANY (atag_list) + AND CASE thesauruses + WHEN '' THEN TRUE + ELSE ash.thesaurus = ANY(regexp_split_to_array(thesauruses, ',')) + END + AND ash.sort_value >= pivot_sort_value + ORDER BY ash.sort_value + LIMIT pagesize + OFFSET ABS(page) * pagesize ; + END IF; +END; +$$ LANGUAGE PLPGSQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.axis_browse_top( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_browse_top(authority.axis_authority_tags($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.btag_browse_top( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_browse_top(authority.btag_authority_tags($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.atag_browse_top( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_browse_top(authority.atag_authority_tags($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.axis_browse_top_refs( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_browse_top(authority.axis_authority_tags_refs($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.btag_browse_top_refs( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_browse_top(authority.btag_authority_tags_refs($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.atag_browse_top_refs( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_browse_top(authority.atag_authority_tags_refs($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + + +CREATE OR REPLACE FUNCTION authority.simple_heading_search_rank( atag_list INT[], q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT ash.id + FROM authority.simple_heading ash, + public.naco_normalize($2) t(term), + plainto_tsquery('keyword'::regconfig,$2) ptsq(term) + WHERE ash.atag = ANY ($1) + AND ash.index_vector @@ ptsq.term + AND CASE $5 + WHEN '' THEN TRUE + ELSE ash.thesaurus = ANY(regexp_split_to_array($5, ',')) + END + ORDER BY ts_rank_cd(ash.index_vector,ptsq.term,14)::numeric + + CASE WHEN ash.sort_value LIKE t.term || '%' THEN 2 ELSE 0 END + + CASE WHEN ash.value LIKE t.term || '%' THEN 1 ELSE 0 END DESC + LIMIT $4 + OFFSET $4 * $3; +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.axis_search_rank( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_search_rank(authority.axis_authority_tags($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.btag_search_rank( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_search_rank(authority.btag_authority_tags($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.atag_search_rank( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_search_rank(authority.atag_authority_tags($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.axis_search_rank_refs( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_search_rank(authority.axis_authority_tags_refs($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.btag_search_rank_refs( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_search_rank(authority.btag_authority_tags_refs($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.atag_search_rank_refs( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_search_rank(authority.atag_authority_tags_refs($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + + +CREATE OR REPLACE FUNCTION authority.simple_heading_search_heading( atag_list INT[], q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT ash.id + FROM authority.simple_heading ash, + public.naco_normalize($2) t(term), + plainto_tsquery('keyword'::regconfig,$2) ptsq(term) + WHERE ash.atag = ANY ($1) + AND ash.index_vector @@ ptsq.term + AND CASE $5 + WHEN '' THEN TRUE + ELSE ash.thesaurus = ANY(regexp_split_to_array($5, ',')) + END + ORDER BY ash.sort_value + LIMIT $4 + OFFSET $4 * $3; +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.axis_search_heading( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_search_heading(authority.axis_authority_tags($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.btag_search_heading( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_search_heading(authority.btag_authority_tags($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.atag_search_heading( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_search_heading(authority.atag_authority_tags($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.axis_search_heading_refs( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_search_heading(authority.axis_authority_tags_refs($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.btag_search_heading_refs( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_search_heading(authority.btag_authority_tags_refs($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + +CREATE OR REPLACE FUNCTION authority.atag_search_heading_refs( a TEXT, q TEXT, page INT DEFAULT 0, pagesize INT DEFAULT 10, thesauruses TEXT DEFAULT '' ) RETURNS SETOF BIGINT AS $$ + SELECT * FROM authority.simple_heading_search_heading(authority.atag_authority_tags_refs($1), $2, $3, $4, $5) +$$ LANGUAGE SQL ROWS 10; + + +\qecho +\qecho Updating the thesaurus codes in authority.simple_heading; +\qecho This may take a while in databases with many authority records. +\qecho +UPDATE authority.simple_heading a +SET thesaurus = authority.extract_thesaurus(b.marc) +FROM authority.record_entry b +WHERE a.record = b.id; + +COMMIT; diff --git a/Open-ILS/src/sql/schema/revert/data.additional_authority_fixed_fields.sql b/Open-ILS/src/sql/schema/revert/data.additional_authority_fixed_fields.sql new file mode 100644 index 0000000000..6191364e2f --- /dev/null +++ b/Open-ILS/src/sql/schema/revert/data.additional_authority_fixed_fields.sql @@ -0,0 +1,7 @@ +-- Revert evergreen:data.additional_authority_fixed_fields.sql from pg + +BEGIN; + +-- XXX Add DDLs here. + +COMMIT; diff --git a/Open-ILS/src/sql/schema/revert/data.adjust_bills_perm.sql b/Open-ILS/src/sql/schema/revert/data.adjust_bills_perm.sql new file mode 100644 index 0000000000..c27a4bf66e --- /dev/null +++ b/Open-ILS/src/sql/schema/revert/data.adjust_bills_perm.sql @@ -0,0 +1,7 @@ +-- Revert evergreen:0944.data.adjust_bills_perm from pg + +BEGIN; + +-- XXX Add DDLs here. + +COMMIT; diff --git a/Open-ILS/src/sql/schema/revert/data.authority.control_set_authority_field-remove-sf-e.sql b/Open-ILS/src/sql/schema/revert/data.authority.control_set_authority_field-remove-sf-e.sql new file mode 100644 index 0000000000..3ce832f6cc --- /dev/null +++ b/Open-ILS/src/sql/schema/revert/data.authority.control_set_authority_field-remove-sf-e.sql @@ -0,0 +1,7 @@ +-- Revert evergreen:data.authority.control_set_authority_field-remove-sf-e from pg + +BEGIN; + +-- XXX Add DDLs here. + +COMMIT; diff --git a/Open-ILS/src/sql/schema/revert/schema.dob-as-date.sql b/Open-ILS/src/sql/schema/revert/schema.dob-as-date.sql new file mode 100644 index 0000000000..1e91270fb4 --- /dev/null +++ b/Open-ILS/src/sql/schema/revert/schema.dob-as-date.sql @@ -0,0 +1,7 @@ +-- Revert evergreen:schema.dob-as-date from pg + +BEGIN; + +-- XXX Add DDLs here. + +COMMIT; diff --git a/Open-ILS/src/sql/schema/revert/schema.filter_authority_browse_search_by_thesaurus.sql b/Open-ILS/src/sql/schema/revert/schema.filter_authority_browse_search_by_thesaurus.sql new file mode 100644 index 0000000000..10c9d97bb7 --- /dev/null +++ b/Open-ILS/src/sql/schema/revert/schema.filter_authority_browse_search_by_thesaurus.sql @@ -0,0 +1,7 @@ +-- Revert evergreen:schema.filter_authority_browse_search_by_thesaurus.sql from pg + +BEGIN; + +-- XXX Add DDLs here. + +COMMIT; diff --git a/Open-ILS/src/sql/schema/sqitch.plan b/Open-ILS/src/sql/schema/sqitch.plan index c0d4edd8ca..b1a74df2ce 100644 --- a/Open-ILS/src/sql/schema/sqitch.plan +++ b/Open-ILS/src/sql/schema/sqitch.plan @@ -68,3 +68,8 @@ schema.teach_record_attributes_about_skos [schema.fix_ingest_of_xpath_based_attr data.some_rda_attributes [schema.teach_record_attributes_about_skos] 2015-08-28T21:45:03Z Bill Erickson # data.some_rda_attributes 30day.expiration.prenotice [data.some_rda_attributes] 2015-08-28T21:45:03Z Bill Erickson # 30day.expiration.prenotice schema.vlist_freq [30day.expiration.prenotice] 2015-08-28T21:45:04Z Bill Erickson # schema.vlist_freq +data.authority.control_set_authority_field-remove-sf-e [schema.vlist_freq] 2015-10-15T14:03:42Z Bill Erickson # data.authority.control_set_authority_field-remove-sf-e +schema.filter_authority_browse_search_by_thesaurus [data.authority.control_set_authority_field-remove-sf-e] 2015-10-15T14:05:34Z Bill Erickson # schema.filter_authority_browse_search_by_thesaurus +data.additional_authority_fixed_fields [schema.filter_authority_browse_search_by_thesaurus] 2015-10-15T14:06:55Z Bill Erickson # data.additional_authority_fixed_fields +data.adjust_bills_perm [data.additional_authority_fixed_fields] 2015-10-15T14:08:04Z Bill Erickson # data.additional_authority_fixed_fields +schema.dob-as-date [data.adjust_bills_perm] 2015-10-15T14:19:48Z Bill Erickson # schema.dob-as-date diff --git a/Open-ILS/src/sql/schema/verify/data.additional_authority_fixed_fields.sql b/Open-ILS/src/sql/schema/verify/data.additional_authority_fixed_fields.sql new file mode 100644 index 0000000000..4e06d9e640 --- /dev/null +++ b/Open-ILS/src/sql/schema/verify/data.additional_authority_fixed_fields.sql @@ -0,0 +1,7 @@ +-- Verify evergreen:data.additional_authority_fixed_fields.sql on pg + +BEGIN; + +-- XXX Add verifications here. + +ROLLBACK; diff --git a/Open-ILS/src/sql/schema/verify/data.adjust_bills_perm.sql b/Open-ILS/src/sql/schema/verify/data.adjust_bills_perm.sql new file mode 100644 index 0000000000..a4f83a384a --- /dev/null +++ b/Open-ILS/src/sql/schema/verify/data.adjust_bills_perm.sql @@ -0,0 +1,7 @@ +-- Verify evergreen:0944.data.adjust_bills_perm on pg + +BEGIN; + +-- XXX Add verifications here. + +ROLLBACK; diff --git a/Open-ILS/src/sql/schema/verify/data.authority.control_set_authority_field-remove-sf-e.sql b/Open-ILS/src/sql/schema/verify/data.authority.control_set_authority_field-remove-sf-e.sql new file mode 100644 index 0000000000..a223c3716b --- /dev/null +++ b/Open-ILS/src/sql/schema/verify/data.authority.control_set_authority_field-remove-sf-e.sql @@ -0,0 +1,7 @@ +-- Verify evergreen:data.authority.control_set_authority_field-remove-sf-e on pg + +BEGIN; + +-- XXX Add verifications here. + +ROLLBACK; diff --git a/Open-ILS/src/sql/schema/verify/schema.dob-as-date.sql b/Open-ILS/src/sql/schema/verify/schema.dob-as-date.sql new file mode 100644 index 0000000000..11a29e617a --- /dev/null +++ b/Open-ILS/src/sql/schema/verify/schema.dob-as-date.sql @@ -0,0 +1,7 @@ +-- Verify evergreen:schema.dob-as-date on pg + +BEGIN; + +-- XXX Add verifications here. + +ROLLBACK; diff --git a/Open-ILS/src/sql/schema/verify/schema.filter_authority_browse_search_by_thesaurus.sql b/Open-ILS/src/sql/schema/verify/schema.filter_authority_browse_search_by_thesaurus.sql new file mode 100644 index 0000000000..ad61d51404 --- /dev/null +++ b/Open-ILS/src/sql/schema/verify/schema.filter_authority_browse_search_by_thesaurus.sql @@ -0,0 +1,7 @@ +-- Verify evergreen:schema.filter_authority_browse_search_by_thesaurus.sql on pg + +BEGIN; + +-- XXX Add verifications here. + +ROLLBACK;