From: Bill Erickson Date: Thu, 28 Dec 2017 17:24:16 +0000 (-0500) Subject: JBAS-1929 Catalog browse mattype sql repairs X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=45eae94ef32e928846dbf961807c529efc66e611;p=working%2FEvergreen.git JBAS-1929 Catalog browse mattype sql repairs Remove errant mattype filter on authority simple heading sub-filter in the browse query. Authority records don't have mattypes. Improve speed of mattype filter by referencing metabib.record_attr_vector_list directly instead of using the nested record_attr view. Signed-off-by: Bill Erickson --- diff --git a/KCLS/sql/schema/deploy/browse-mattype-filter.sql b/KCLS/sql/schema/deploy/browse-mattype-filter.sql index 45ca480e75..29cc151572 100644 --- a/KCLS/sql/schema/deploy/browse-mattype-filter.sql +++ b/KCLS/sql/schema/deploy/browse-mattype-filter.sql @@ -32,7 +32,6 @@ DECLARE forward_limit INT; forward_to_pivot INT; mbedm_mattype_filter TEXT DEFAULT ''; - mbeshm_mattype_filter TEXT DEFAULT ''; BEGIN --ver1.1 updated with kmain-806 -- Get search field int list with search_class @@ -129,18 +128,16 @@ BEGIN IF item_type IS NOT NULL THEN mbedm_mattype_filter := $x$ AND mbedm.source IN ( - SELECT id FROM metabib.record_attr - WHERE attrs-> 'mattype' = '$x$ || item_type || $x$' + -- NOTE joining directly to metabib.record_attr_vector_list + -- is considerably faster than using the record_attr view + -- for expansive queries like this. + SELECT vec.source + FROM metabib.record_attr_vector_list vec + JOIN config.coded_value_map ccvm + ON (ccvm.ctype = 'mattype' AND ccvm.id = ANY (vec.vlist)) + WHERE ccvm.code = '$x$ || item_type || $x$' ) $x$; - - mbeshm_mattype_filter := $x$ - AND mbeshm.entry IN ( - SELECT id FROM metabib.record_attr - WHERE attrs-> 'mattype' = '$x$ || item_type || $x$' - ) - $x$; - END IF; create temporary table tmp_metabib_browse @@ -188,7 +185,7 @@ SELECT mbe.id, ash.atag = map.authority_field AND map.metabib_field = ANY(' || quote_literal(search_field) || ') ) - WHERE mbeshm.entry = mbe.id ' || mbeshm_mattype_filter || ' + WHERE mbeshm.entry = mbe.id )'; END IF;