moving xml2 requirement out of the way
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 8 Mar 2007 19:34:31 +0000 (19:34 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 8 Mar 2007 19:34:31 +0000 (19:34 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@7045 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/sql/Pg/002.functions.config.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/002.schema.config.sql

diff --git a/Open-ILS/src/sql/Pg/002.functions.config.sql b/Open-ILS/src/sql/Pg/002.functions.config.sql
new file mode 100644 (file)
index 0000000..b5d326c
--- /dev/null
@@ -0,0 +1,42 @@
+BEGIN;
+
+CREATE OR REPLACE FUNCTION oils_xml_transform ( TEXT, TEXT ) RETURNS TEXT AS $_$
+       SELECT  CASE    WHEN (SELECT COUNT(*) FROM config.xml_transform WHERE name = $2 AND xslt = '---') > 0 THEN $1
+                       ELSE xslt_process($1, (SELECT xslt FROM config.xml_transform WHERE name = $2))
+               END;
+$_$ LANGUAGE SQL STRICT IMMUTABLE;
+
+
+
+CREATE TYPE biblio_field_vtype AS ( record BIGINT, field INT, content TEXT );
+CREATE OR REPLACE FUNCTION biblio_field_table ( record BIGINT, field_list INT[] ) RETURNS SETOF biblio_field_vtype AS $_$
+DECLARE
+       i INT;
+       rec biblio_field_vtype%ROWTYPE;
+BEGIN
+       FOR i IN ARRAY_LOWER(field_list,1) .. ARRAY_UPPER(field_list,1) LOOP
+               FOR rec IN      SELECT  DISTINCT r, field_list[i], BTRIM(REGEXP_REPLACE(REGEXP_REPLACE(f, E'\n', ' ', 'g'), '[ ]+', ' ', 'g'))
+                                 FROM  xpath_table_ns(
+                                               'id',
+                                               $$oils_xml_transform(marc,'$$ || (SELECT format FROM config.metabib_field WHERE id = field_list[i]) || $$')$$,
+                                               'biblio.record_entry',
+                                               (SELECT xpath FROM config.metabib_field WHERE id = field_list[i]),
+                                               'id = ' || record,
+                                               (SELECT x.prefix FROM config.xml_transform x JOIN config.metabib_field m ON (m.format = x.name) WHERE m.id = field_list[i]),
+                                               (SELECT x.namespace_uri FROM config.xml_transform x JOIN config.metabib_field m ON (m.format = x.name) WHERE m.id = field_list[i])
+                                       ) AS t( r bigint, f text)
+                                 WHERE f IS NOT NULL LOOP
+                       RETURN NEXT rec;
+               END LOOP;
+       END LOOP;
+END;
+$_$ LANGUAGE PLPGSQL;
+
+
+
+CREATE OR REPLACE FUNCTION biblio_field_table ( record BIGINT, field INT ) RETURNS SETOF biblio_field_vtype AS $_$
+       SELECT * FROM biblio_field_table( $1, ARRAY[$2] )
+$_$ LANGUAGE SQL;
+
+COMMIT;
+
index fc07030..618f0ba 100644 (file)
@@ -162,48 +162,6 @@ INSERT INTO config.metabib_field ( field_class, name, xpath ) VALUES ( 'subject'
 -- INSERT INTO config.metabib_field ( field_class, name, xpath ) VALUES ( 'subject', 'genre', $$//mods:mods/mods:genre$$ );
 INSERT INTO config.metabib_field ( field_class, name, xpath ) VALUES ( 'keyword', 'keyword', $$//mods:mods/*[not(local-name()='originInfo')]$$ ); -- /* to fool vim */
 
-
-
-CREATE OR REPLACE FUNCTION oils_xml_transform ( TEXT, TEXT ) RETURNS TEXT AS $_$
-       SELECT  CASE    WHEN (SELECT COUNT(*) FROM config.xml_transform WHERE name = $2 AND xslt = '---') > 0 THEN $1
-                       ELSE xslt_process($1, (SELECT xslt FROM config.xml_transform WHERE name = $2))
-               END;
-$_$ LANGUAGE SQL STRICT IMMUTABLE;
-
-
-
-CREATE TYPE biblio_field_vtype AS ( record BIGINT, field INT, content TEXT );
-CREATE OR REPLACE FUNCTION biblio_field_table ( record BIGINT, field_list INT[] ) RETURNS SETOF biblio_field_vtype AS $_$
-DECLARE
-       i INT;
-       rec biblio_field_vtype%ROWTYPE;
-BEGIN
-       FOR i IN ARRAY_LOWER(field_list,1) .. ARRAY_UPPER(field_list,1) LOOP
-               FOR rec IN      SELECT  DISTINCT r, field_list[i], BTRIM(REGEXP_REPLACE(REGEXP_REPLACE(f, E'\n', ' ', 'g'), '[ ]+', ' ', 'g'))
-                                 FROM  xpath_table_ns(
-                                               'id',
-                                               $$oils_xml_transform(marc,'$$ || (SELECT format FROM config.metabib_field WHERE id = field_list[i]) || $$')$$,
-                                               'biblio.record_entry',
-                                               (SELECT xpath FROM config.metabib_field WHERE id = field_list[i]),
-                                               'id = ' || record,
-                                               (SELECT x.prefix FROM config.xml_transform x JOIN config.metabib_field m ON (m.format = x.name) WHERE m.id = field_list[i]),
-                                               (SELECT x.namespace_uri FROM config.xml_transform x JOIN config.metabib_field m ON (m.format = x.name) WHERE m.id = field_list[i])
-                                       ) AS t( r bigint, f text)
-                                 WHERE f IS NOT NULL LOOP
-                       RETURN NEXT rec;
-               END LOOP;
-       END LOOP;
-END;
-$_$ LANGUAGE PLPGSQL;
-
-
-
-CREATE OR REPLACE FUNCTION biblio_field_table ( record BIGINT, field INT ) RETURNS SETOF biblio_field_vtype AS $_$
-       SELECT * FROM biblio_field_table( $1, ARRAY[$2] )
-$_$ LANGUAGE SQL;
-
-
-
 CREATE TABLE config.non_cataloged_type (
        id              SERIAL          PRIMARY KEY,
        owning_lib      INT             NOT NULL, -- REFERENCES actor.org_unit (id),