);
END IF;
IF rmarc IS NULL THEN
- SELECT marc INTO rmarc FROM biblio_record_entry_legacy WHERE id = rid;
+ SELECT marc INTO rmarc FROM m_biblio_record_entry_legacy WHERE id = rid;
END IF;
FOR attr_def IN SELECT * FROM config.record_attr_definition WHERE NOT composite AND name = ANY( attr_list ) ORDER BY format LOOP
icon TEXT[];
vlist INTEGER[];
BEGIN
- SELECT reingest_staged_record_attributes(rid) INTO vlist;
+ SELECT migration_tools.reingest_staged_record_attributes(rid) INTO vlist;
RETURN QUERY SELECT ctype, code, value FROM config.coded_value_map WHERE id IN (SELECT UNNEST(vlist));
END;
search TEXT[];
vlist INTEGER[];
BEGIN
- SELECT reingest_staged_record_attributes(rid) INTO vlist;
+ SELECT migration_tools.reingest_staged_record_attributes(rid) INTO vlist;
SELECT ARRAY_AGG(code) FROM config.coded_value_map WHERE id IN (SELECT UNNEST(vlist))
AND ctype = 'search_format' INTO search;
- UPDATE biblio_record_entry_legacy SET x_search_format = search WHERE id = rid;
+ UPDATE m_biblio_record_entry_legacy SET x_search_format = search WHERE id = rid;
END;
$func$ LANGUAGE PLPGSQL;
search TEXT[];
vlist INTEGER[];
BEGIN
- SELECT reingest_staged_record_attributes(rid) INTO vlist;
+ SELECT migration_tools.reingest_staged_record_attributes(rid) INTO vlist;
SELECT ARRAY_AGG(code) FROM config.coded_value_map WHERE id IN (SELECT UNNEST(vlist))
AND ctype = 'search_format' INTO search;
search TEXT[];
vlist INTEGER[];
BEGIN
- SELECT reingest_staged_record_attributes(rid) INTO vlist;
+ SELECT migration_tools.reingest_staged_record_attributes(rid) INTO vlist;
SELECT ARRAY_AGG(code) FROM config.coded_value_map WHERE id IN (SELECT UNNEST(vlist))
AND ctype = 'search_format' INTO search;
- UPDATE biblio_record_entry_legacy SET x_after_search_format = search WHERE id = rid;
+ UPDATE m_biblio_record_entry_legacy SET x_after_search_format = search WHERE id = rid;
END;
$func$ LANGUAGE PLPGSQL;
y TEXT;
w TEXT[];
BEGIN
- SELECT circ_mods FROM biblio_record_entry_legacy WHERE id = rid INTO cms;
+ SELECT circ_mods FROM m_biblio_record_entry_legacy WHERE id = rid INTO cms;
IF cms IS NOT NULL THEN
FOREACH y IN ARRAY cms LOOP
w := w || (SELECT sf1 FROM circ_mod_to_sf_map WHERE circ_mod = y);
w := w || (SELECT sf2 FROM circ_mod_to_sf_map WHERE circ_mod = y);
w := w || (SELECT sf3 FROM circ_mod_to_sf_map WHERE circ_mod = y);
END LOOP;
- UPDATE biblio_record_entry_legacy SET expected_sfs = w WHERE id = rid;
+ UPDATE m_biblio_record_entry_legacy SET expected_sfs = w WHERE id = rid;
END IF;
END;
$func$ LANGUAGE PLPGSQL;
-DROP AGGREGATE IF EXISTS anyarray_agg(anyarray);
-CREATE AGGREGATE anyarray_agg(anyarray) (
- SFUNC = anyarray_agg_statefunc,
- STYPE = anyarray
-);
-COMMENT ON AGGREGATE anyarray_agg(anyarray) IS
-'Concatenates arrays into a single array when aggregating.';
-
-DROP FUNCTION IF EXISTS migration_tools.anyarray_agg_statefunc(anyarray, anyarray);
-CREATE FUNCTION anyarray_agg_statefunc(state anyarray, value anyarray)
- RETURNS anyarray AS
-$BODY$
- SELECT array_cat($1, $2)
-$BODY$
- LANGUAGE sql IMMUTABLE;
-COMMENT ON FUNCTION anyarray_agg_statefunc(anyarray, anyarray) IS
-'Used internally by aggregate anyarray_agg(anyarray).';
-
-DROP FUNCTION IF EXISTS migration_tools.anyarray_sort(anyarray);
-CREATE OR REPLACE FUNCTION migration_tools.anyarray_sort(with_array anyarray)
- RETURNS anyarray AS
-$BODY$
- DECLARE
- return_array with_array%TYPE := '{}';
- BEGIN
- SELECT ARRAY_AGG(sorted_vals.val) AS array_value
- FROM
- ( SELECT UNNEST(with_array) AS val
- ORDER BY val
- ) AS sorted_vals INTO return_array;
- RETURN return_array;
- END;
-$BODY$ LANGUAGE plpgsql;
-
-DROP FUNCTION IF EXISTS migration_tools.anyarray_uniq(anyarray);
-CREATE OR REPLACE FUNCTION migration_tools.anyarray_uniq(with_array anyarray)
- RETURNS anyarray AS
-$BODY$
- DECLARE
- -- The variable used to track iteration over "with_array".
- loop_offset integer;
-
- -- The array to be returned by this function.
- return_array with_array%TYPE := '{}';
- BEGIN
- IF with_array IS NULL THEN
- return NULL;
- END IF;
-
- IF with_array = '{}' THEN
- return return_array;
- END IF;
-
- -- Iterate over each element in "concat_array".
- FOR loop_offset IN ARRAY_LOWER(with_array, 1)..ARRAY_UPPER(with_array, 1) LOOP
- IF with_array[loop_offset] IS NULL THEN
- IF NOT EXISTS
- ( SELECT 1 FROM UNNEST(return_array) AS s(a)
- WHERE a IS NULL )
- THEN return_array = ARRAY_APPEND(return_array, with_array[loop_offset]);
- END IF;
- -- When an array contains a NULL value, ANY() returns NULL instead of FALSE...
- ELSEIF NOT(with_array[loop_offset] = ANY(return_array)) OR NOT(NULL IS DISTINCT FROM (with_array[loop_offset] = ANY(return_array))) THEN
- return_array = ARRAY_APPEND(return_array, with_array[loop_offset]);
- END IF;
- END LOOP;
-
- RETURN return_array;
- END;
-$BODY$ LANGUAGE plpgsql;
-
DROP FUNCTION IF EXISTS migration_tools.modify_staged_fixed_fields (BIGINT,TEXT);
CREATE OR REPLACE FUNCTION migration_tools.modify_staged_fixed_fields (bib_id BIGINT, xcode TEXT)
RETURNS BOOLEAN
ELSE
ysrform_exclude := '';
END IF;
- SELECT modify_fixed_fields(marc,xcode,xitype,xiform,xphy,xphyv,xphyp,xbiblevel,yiform_exclude,ysrform_exclude) FROM biblio_record_entry_legacy WHERE id = bib_id INTO r;
- UPDATE biblio_record_entry_legacy SET marc = r WHERE id = bib_id;
+ SELECT migration_tools.modify_fixed_fields(marc,xcode,xitype,xiform,xphy,xphyv,xphyp,xbiblevel,yiform_exclude,ysrform_exclude) FROM m_biblio_record_entry_legacy WHERE id = bib_id INTO r;
+ UPDATE m_biblio_record_entry_legacy SET marc = r WHERE id = bib_id;
RETURN TRUE;
END;
$function$;
return $marc->as_xml_record;
$function$;
+DROP FUNCTION IF EXISTS migration_tools.modify_biblio_fixed_fields (BIGINT,TEXT);
+CREATE OR REPLACE FUNCTION migration_tools.modify_biblio_fixed_fields (bib_id BIGINT, xcode TEXT)
+ RETURNS BOOLEAN
+ LANGUAGE plpgsql
+AS $function$
+DECLARE
+ r TEXT;
+ xitype CHAR(1);
+ xiform CHAR(1);
+ xphy CHAR(1);
+ xphyv CHAR(1);
+ xphyp SMALLINT;
+ xbiblevel CHAR(1);
+ xiform_exclude CHAR(1)[];
+ xsrform_exclude CHAR(1)[];
+ yiform_exclude TEXT;
+ ysrform_exclude TEXT;
+BEGIN
+ SELECT itype, iform, phy, phyv, phyp, biblevel, iform_exclude, srform_exclude FROM migration_tools.search_format_map WHERE code = xcode
+ INTO xitype, xiform, xphy, xphyv, xphyp, xbiblevel, xiform_exclude, xsrform_exclude;
+ IF xiform_exclude IS NOT NULL THEN
+ yiform_exclude := ARRAY_TO_STRING(xiform_exclude,',');
+ ELSE
+ yiform_exclude := '';
+ END IF;
+ IF xsrform_exclude IS NOT NULL THEN
+ ysrform_exclude := ARRAY_TO_STRING(ysrform_exclude,',');
+ ELSE
+ ysrform_exclude := '';
+ END IF;
+ SELECT migration_tools.modify_fixed_fields(marc,xcode,xitype,xiform,xphy,xphyv,xphyp,xbiblevel,yiform_exclude,ysrform_exclude) FROM biblio.record_entry WHERE id = bib_id INTO r;
+ UPDATE biblio.record_entry SET marc = r WHERE id = bib_id;
+ RETURN TRUE;
+END;
+$function$;