Fix metabib.record_attr_flat view user/tsbere/fix_record_attr_flat
authorThomas Berezansky <tsbere@mvlc.org>
Mon, 8 Dec 2014 15:53:57 +0000 (10:53 -0500)
committerThomas Berezansky <tsbere@mvlc.org>
Mon, 8 Dec 2014 15:53:57 +0000 (10:53 -0500)
When using LEFT joins other views error out due to null fields in HSTORE,
causing failures in circ amongst other things.

Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
Open-ILS/src/sql/Pg/030.schema.metabib.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.schema.fix_record_attr_flat.sql [new file with mode: 0644]

index c03868e..9769f95 100644 (file)
@@ -412,13 +412,13 @@ CREATE VIEW metabib.record_attr_flat AS
             m.attr AS attr,
             m.value AS value
       FROM  metabib.record_attr_vector_list v
-            LEFT JOIN metabib.uncontrolled_record_attr_value m ON ( m.id = ANY( v.vlist ) )
+            JOIN metabib.uncontrolled_record_attr_value m ON ( m.id = ANY( v.vlist ) )
         UNION
     SELECT  v.source AS id,
             c.ctype AS attr,
             c.code AS value
       FROM  metabib.record_attr_vector_list v
-            LEFT JOIN config.coded_value_map c ON ( c.id = ANY( v.vlist ) );
+            JOIN config.coded_value_map c ON ( c.id = ANY( v.vlist ) );
 
 CREATE VIEW metabib.record_attr AS
     SELECT id, HSTORE( ARRAY_AGG( attr ), ARRAY_AGG( value ) ) AS attrs FROM metabib.record_attr_flat GROUP BY 1;
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.fix_record_attr_flat.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.fix_record_attr_flat.sql
new file mode 100644 (file)
index 0000000..6a6a42e
--- /dev/null
@@ -0,0 +1,12 @@
+CREATE OR REPLACE VIEW metabib.record_attr_flat AS
+    SELECT  v.source AS id,
+            m.attr AS attr,
+            m.value AS value
+      FROM  metabib.record_attr_vector_list v
+            JOIN metabib.uncontrolled_record_attr_value m ON ( m.id = ANY( v.vlist ) )
+        UNION
+    SELECT  v.source AS id,
+            c.ctype AS attr,
+            c.code AS value
+      FROM  metabib.record_attr_vector_list v
+            JOIN config.coded_value_map c ON ( c.id = ANY( v.vlist ) );