changeset 5534:cb62985ec252 aggregate-gm-import-logging

WIP: Started with migration to convert all gm logs to new form.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 25 Oct 2021 15:43:38 +0200
parents 0a2326eda3a5
children 1fba5766d820
files schema/updates/1469/aggregate-gm-logs.sql
diffstat 1 files changed, 53 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/schema/updates/1469/aggregate-gm-logs.sql	Mon Oct 25 15:43:38 2021 +0200
@@ -0,0 +1,53 @@
+DO $$
+DECLARE
+  logs CURSOR FOR SELECT
+       lo.* FROM import.imports im JOIN import.import_logs lo
+       ON lo.import_id = im.id
+       WHERE im.kind = 'gm'
+       ORDER BY lo.import_id, lo.time;
+  last_id integer;
+BEGIN
+
+  CREATE TEMP TABLE filtered_logs (
+      import_id integer                  NOT NULL,
+      time      timestamp with time zone NOT NULL,
+      kind      log_type                 NOT NULL default 'info'::log_type,
+      msg       text                     NOT NULL
+  );
+
+  CREATE TEMP TABLE agg_tracker (
+      gid            text    NOT NULL UNIQUE,
+      unknown        boolean NOT NULL DEFAULT false,
+      assume_zpg     boolean NOT NULL DEFAULT false,
+      ign_meas_codes text ARRAY,
+      rescale_errors text ARRAY,
+      missing_values text ARRAY,
+      assume_cm      integer NOT NULL DEFAULT 0,
+      bad_values     integer NOT NULL DEFAULT 0,
+      measurements   integer NOT NULL DEFAULT 0,
+      predictions    integer NOT NULL DEFAULT 0
+  );
+  last_id := -1;
+  FOR line IN logs LOOP
+    IF last_id <> line.import_id THEN
+       RAISE NOTICE '%', line.import_id;
+       last_id := line.import_id;
+       -- TODO: Generated log lines from agg_tracker
+       TRUNCATE agg_tracker;
+    END IF;
+    -- TODO: insert lines into filtered_logs or aggregate in agg_tracker
+  END LOOP;
+
+  -- TODO: Handle remains from agg_tracker
+
+  -- DELETE FROM import.import_logs WHERE import_id IN (
+  --  SELECT id FROM import.imports WHERE kind = 'gm')
+
+  -- INSERT INTO import.import_logs SELECT * FROM import.filtered_logs;
+
+  DROP TABLE filtered_logs;
+  DROP TABLE agg_tracker;
+END $$;
+-- VACUUM FULL;
+
+