Mercurial > gemma
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; + +