Restrict pre-update clearing to the metabib fields specified (defaults to all) user/miker/lp-1979071-queued-ingest-rebase-with-stop-option
authorMike Rylander <mrylander@gmail.com>
Wed, 26 Oct 2022 16:44:26 +0000 (12:44 -0400)
committerMike Rylander <mrylander@gmail.com>
Wed, 26 Oct 2022 16:44:26 +0000 (12:44 -0400)
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Open-ILS/src/sql/Pg/upgrade/XXXX.schema.queued_ingest.sql

index 49a2dad..cef0081 100644 (file)
@@ -982,21 +982,19 @@ BEGIN
 
     PERFORM * FROM config.internal_flag WHERE name = 'ingest.assume_inserts_only' AND enabled;
     IF NOT FOUND THEN
-        -- XXX Need to include field_list in the WHERE clauses below!
         IF NOT b_skip_search THEN
             FOR fclass IN SELECT * FROM config.metabib_class LOOP
-                -- RAISE NOTICE 'Emptying out %', fclass.name;
-                EXECUTE $$DELETE FROM metabib.$$ || fclass.name || $$_field_entry WHERE source = $$ || bib_id;
+                EXECUTE $$DELETE FROM metabib.$$ || fclass.name || $$_field_entry WHERE source = $$ || bib_id || $$ AND field = ANY($1)$$ USING field_list;
             END LOOP;
         END IF;
         IF NOT b_skip_facet THEN
-            DELETE FROM metabib.facet_entry WHERE source = bib_id;
+            DELETE FROM metabib.facet_entry WHERE source = bib_id AND field = ANY(field_list);
         END IF;
         IF NOT b_skip_display THEN
-            DELETE FROM metabib.display_entry WHERE source = bib_id;
+            DELETE FROM metabib.display_entry WHERE source = bib_id AND field = ANY(field_list);
         END IF;
         IF NOT b_skip_browse THEN
-            DELETE FROM metabib.browse_entry_def_map WHERE source = bib_id;
+            DELETE FROM metabib.browse_entry_def_map WHERE source = bib_id AND def = ANY(field_list);
         END IF;
     END IF;