JBAS-2196 Avoid dupe browse mattype filter
authorBill Erickson <berickxx@gmail.com>
Fri, 22 Feb 2019 19:07:55 +0000 (11:07 -0800)
committerBill Erickson <berickxx@gmail.com>
Thu, 21 Mar 2019 19:51:45 +0000 (15:51 -0400)
Rearrange browse SQL to avoid returning duplicate results when browsing
with a mattype (ccvm) filter.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
KCLS/sql/schema/deploy/2.12-3.2-db-upgrade-schema.sql

index 56aa797..7028932 100644 (file)
@@ -5212,12 +5212,15 @@ BEGIN
 
     IF ccvm_ctype IS NOT NULL THEN
         ccvm_filter_join := $x$
-            JOIN metabib.browse_entry_def_map mbedm ON (mbedm.entry = mbe.id)
-            JOIN metabib.record_attr_vector_list vec ON (vec.source = mbedm.source)
-            JOIN config.coded_value_map ccvm ON (
-                ccvm.ctype = $x$ || QUOTE_LITERAL(ccvm_ctype) || $x$ 
-                AND ccvm.id = ANY (vec.vlist)
-                AND ccvm.code = $x$ || QUOTE_LITERAL(ccvm_code) || $x$
+            AND EXISTS (
+                SELECT TRUE FROM metabib.browse_entry_def_map mbedm
+                JOIN metabib.record_attr_vector_list vec ON (vec.source = mbedm.source)
+                JOIN config.coded_value_map ccvm ON (
+                    ccvm.ctype = $x$ || QUOTE_LITERAL(ccvm_ctype) || $x$ 
+                    AND ccvm.id = ANY (vec.vlist)
+                    AND ccvm.code = $x$ || QUOTE_LITERAL(ccvm_code) || $x$
+                )
+                WHERE mbedm.entry = mbe.id
             )
         $x$;
     END IF;
@@ -5231,8 +5234,8 @@ SELECT  mbe.id,
         mbe.value,
         mbe.sort_value
   FROM  metabib.browse_entry mbe
-        ' || ccvm_filter_join || '
   WHERE mbe.metabib_fields_cache && ' || quote_literal(search_field) ||
+      ccvm_filter_join ||
       ' AND ';
 
     -- This is the variant of the query for browsing backward.