changeset 4033:4f2f34f5d14d

Schema: delete only import entry that are for deletion.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 23 Jul 2019 16:59:43 +0200
parents 2fcfae3daa7d
children f2d5bf42ed38 fbd7c012f10c
files schema/gemma.sql schema/updates/1008/01.import-delete.sql schema/version.sql
diffstat 3 files changed, 18 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/schema/gemma.sql	Tue Jul 23 14:58:56 2019 +0200
+++ b/schema/gemma.sql	Tue Jul 23 16:59:43 2019 +0200
@@ -876,7 +876,7 @@
     tmp RECORD;
 BEGIN
     FOR tmp IN
-        SELECT * FROM import.track_imports WHERE import_id = imp_id
+        SELECT * FROM import.track_imports WHERE import_id = imp_id AND NOT deletion
     LOOP
         EXECUTE format('DELETE FROM %s WHERE id = $1', tmp.relation) USING tmp.key;
     END LOOP;
@@ -884,15 +884,6 @@
 $$
 LANGUAGE plpgsql;
 
-CREATE FUNCTION import.del_import() RETURNS trigger AS
-$$
-BEGIN
-    EXECUTE format('DELETE FROM %s WHERE id = $1', OLD.relation) USING OLD.key;
-    RETURN NULL;
-END;
-$$
-LANGUAGE plpgsql;
-
 CREATE SCHEMA caching
 
     CREATE TABLE sounding_differences (
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/schema/updates/1008/01.import-delete.sql	Tue Jul 23 16:59:43 2019 +0200
@@ -0,0 +1,16 @@
+DROP FUNCTION  import.del_import();
+
+CREATE OR REPLACE FUNCTION import.del_import(imp_id int) RETURNS void AS
+$$
+DECLARE
+    tmp RECORD;
+BEGIN
+    FOR tmp IN
+        SELECT * FROM import.track_imports WHERE import_id = imp_id AND NOT deletion
+    LOOP
+        EXECUTE format('DELETE FROM %s WHERE id = $1', tmp.relation) USING tmp.key;
+    END LOOP;
+END;
+$$
+LANGUAGE plpgsql;
+
--- a/schema/version.sql	Tue Jul 23 14:58:56 2019 +0200
+++ b/schema/version.sql	Tue Jul 23 16:59:43 2019 +0200
@@ -1,1 +1,1 @@
-INSERT INTO gemma_schema_version(version) VALUES (1007);
+INSERT INTO gemma_schema_version(version) VALUES (1008);