More fixes for public.oils_tsearch2
authorDan Wells <dbw2@calvin.edu>
Thu, 20 Feb 2014 16:52:19 +0000 (11:52 -0500)
committerDan Wells <dbw2@calvin.edu>
Thu, 20 Feb 2014 16:52:19 +0000 (11:52 -0500)
First, we don't want to fully exclude records which don't have a
metabib.record_attr_vector_list entry, so we do a LEFT JOIN instead
for that table.  Otherwise, some records error out when ingesting
(see placeholder record -1 in the stock data set).

Second, let's add a check for 'active' which appears to have been
always missing.

Signed-off-by: Dan Wells <dbw2@calvin.edu>
Open-ILS/src/sql/Pg/030.schema.metabib.sql
Open-ILS/src/sql/Pg/upgrade/QQQQ.MVF_CRA-upgrade.sql

index be369c7..554deb4 100644 (file)
@@ -2066,24 +2066,28 @@ BEGIN
 
             SELECT DISTINCT m.ts_config, m.index_weight
             FROM config.metabib_class_ts_map m
-                 JOIN metabib.record_attr_vector_list r ON (r.source = NEW.source)
+                 LEFT JOIN metabib.record_attr_vector_list r ON (r.source = NEW.source)
                  LEFT JOIN config.coded_value_map ccvm ON (
                     ccvm.ctype IN ('item_lang', 'language') AND
                     ccvm.code = m.index_lang AND
                     r.vlist @> intset(ccvm.id)
                 )
             WHERE m.field_class = TG_ARGV[0]
+                AND m.active
                 AND (m.always OR NOT EXISTS (SELECT 1 FROM config.metabib_field_ts_map WHERE metabib_field = NEW.field))
+                AND (m.index_lang IS NULL OR ccvm.id IS NOT NULL)
                         UNION
             SELECT DISTINCT m.ts_config, m.index_weight
             FROM config.metabib_field_ts_map m
-                 JOIN metabib.record_attr_vector_list r ON (r.source = NEW.source)
+                 LEFT JOIN metabib.record_attr_vector_list r ON (r.source = NEW.source)
                  LEFT JOIN config.coded_value_map ccvm ON (
                     ccvm.ctype IN ('item_lang', 'language') AND
                     ccvm.code = m.index_lang AND
                     r.vlist @> intset(ccvm.id)
                 )
             WHERE m.metabib_field = NEW.field
+                AND m.active
+                AND (m.index_lang IS NULL OR ccvm.id IS NOT NULL)
             ORDER BY index_weight ASC
 
         LOOP
index 58d0215..dd84a49 100644 (file)
@@ -620,24 +620,28 @@ BEGIN
 
             SELECT DISTINCT m.ts_config, m.index_weight
             FROM config.metabib_class_ts_map m
-                 JOIN metabib.record_attr_vector_list r ON (r.source = NEW.source)
+                 LEFT JOIN metabib.record_attr_vector_list r ON (r.source = NEW.source)
                  LEFT JOIN config.coded_value_map ccvm ON (
                     ccvm.ctype IN ('item_lang', 'language') AND
                     ccvm.code = m.index_lang AND
                     r.vlist @> intset(ccvm.id)
                 )
             WHERE m.field_class = TG_ARGV[0]
+                AND m.active
                 AND (m.always OR NOT EXISTS (SELECT 1 FROM config.metabib_field_ts_map WHERE metabib_field = NEW.field))
+                AND (m.index_lang IS NULL OR ccvm.id IS NOT NULL)
                         UNION
             SELECT DISTINCT m.ts_config, m.index_weight
             FROM config.metabib_field_ts_map m
-                 JOIN metabib.record_attr_vector_list r ON (r.source = NEW.source)
+                 LEFT JOIN metabib.record_attr_vector_list r ON (r.source = NEW.source)
                  LEFT JOIN config.coded_value_map ccvm ON (
                     ccvm.ctype IN ('item_lang', 'language') AND
                     ccvm.code = m.index_lang AND
                     r.vlist @> intset(ccvm.id)
                 )
             WHERE m.metabib_field = NEW.field
+                AND m.active
+                AND (m.index_lang IS NULL OR ccvm.id IS NOT NULL)
             ORDER BY index_weight ASC
 
         LOOP