1
0
mirror of https://github.com/ARM-software/workload-automation.git synced 2025-01-31 02:01:16 +00:00

postgres_schemas: Add rules for cascading deletes

Add cascading deletes to foreign keys as well as a rule to delete large
objects when artifacts are deleted.

Deleting a run entry should delete all dependent data of that run.
This commit is contained in:
Jonathan Paynter 2020-07-14 14:42:41 +01:00 committed by Marc Bonnici
parent 879a491691
commit 9edb6b20f0
3 changed files with 134 additions and 15 deletions

View File

@ -1,4 +1,4 @@
--!VERSION!1.5!ENDVERSION! --!VERSION!1.6!ENDVERSION!
CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE EXTENSION IF NOT EXISTS "lo"; CREATE EXTENSION IF NOT EXISTS "lo";
@ -61,7 +61,7 @@ CREATE TABLE Runs (
CREATE TABLE Jobs ( CREATE TABLE Jobs (
oid uuid NOT NULL, oid uuid NOT NULL,
run_oid uuid NOT NULL references Runs(oid), run_oid uuid NOT NULL references Runs(oid) ON DELETE CASCADE,
status status_enum, status status_enum,
retry int, retry int,
label text, label text,
@ -76,7 +76,7 @@ CREATE TABLE Jobs (
CREATE TABLE Targets ( CREATE TABLE Targets (
oid uuid NOT NULL, oid uuid NOT NULL,
run_oid uuid NOT NULL references Runs(oid), run_oid uuid NOT NULL references Runs(oid) ON DELETE CASCADE,
target text, target text,
modules text[], modules text[],
cpus text[], cpus text[],
@ -103,7 +103,7 @@ CREATE TABLE Targets (
CREATE TABLE Events ( CREATE TABLE Events (
oid uuid NOT NULL, oid uuid NOT NULL,
run_oid uuid NOT NULL references Runs(oid), run_oid uuid NOT NULL references Runs(oid) ON DELETE CASCADE,
job_oid uuid references Jobs(oid), job_oid uuid references Jobs(oid),
timestamp timestamp, timestamp timestamp,
message text, message text,
@ -114,28 +114,28 @@ CREATE TABLE Events (
CREATE TABLE Resource_Getters ( CREATE TABLE Resource_Getters (
oid uuid NOT NULL, oid uuid NOT NULL,
run_oid uuid NOT NULL references Runs(oid), run_oid uuid NOT NULL references Runs(oid) ON DELETE CASCADE,
name text, name text,
PRIMARY KEY (oid) PRIMARY KEY (oid)
); );
CREATE TABLE Augmentations ( CREATE TABLE Augmentations (
oid uuid NOT NULL, oid uuid NOT NULL,
run_oid uuid NOT NULL references Runs(oid), run_oid uuid NOT NULL references Runs(oid) ON DELETE CASCADE,
name text, name text,
PRIMARY KEY (oid) PRIMARY KEY (oid)
); );
CREATE TABLE Jobs_Augs ( CREATE TABLE Jobs_Augs (
oid uuid NOT NULL, oid uuid NOT NULL,
job_oid uuid NOT NULL references Jobs(oid), job_oid uuid NOT NULL references Jobs(oid) ON DELETE CASCADE,
augmentation_oid uuid NOT NULL references Augmentations(oid), augmentation_oid uuid NOT NULL references Augmentations(oid) ON DELETE CASCADE,
PRIMARY KEY (oid) PRIMARY KEY (oid)
); );
CREATE TABLE Metrics ( CREATE TABLE Metrics (
oid uuid NOT NULL, oid uuid NOT NULL,
run_oid uuid NOT NULL references Runs(oid), run_oid uuid NOT NULL references Runs(oid) ON DELETE CASCADE,
job_oid uuid references Jobs(oid), job_oid uuid references Jobs(oid),
name text, name text,
value double precision, value double precision,
@ -158,7 +158,7 @@ CREATE TRIGGER t_raster BEFORE UPDATE OR DELETE ON LargeObjects
CREATE TABLE Artifacts ( CREATE TABLE Artifacts (
oid uuid NOT NULL, oid uuid NOT NULL,
run_oid uuid NOT NULL references Runs(oid), run_oid uuid NOT NULL references Runs(oid) ON DELETE CASCADE,
job_oid uuid references Jobs(oid), job_oid uuid references Jobs(oid),
name text, name text,
large_object_uuid uuid NOT NULL references LargeObjects(oid), large_object_uuid uuid NOT NULL references LargeObjects(oid),
@ -170,12 +170,18 @@ CREATE TABLE Artifacts (
PRIMARY KEY (oid) PRIMARY KEY (oid)
); );
CREATE RULE del_lo AS
ON DELETE TO Artifacts
DO DELETE FROM LargeObjects
WHERE LargeObjects.oid = old.large_object_uuid
;
CREATE TABLE Classifiers ( CREATE TABLE Classifiers (
oid uuid NOT NULL, oid uuid NOT NULL,
artifact_oid uuid references Artifacts(oid), artifact_oid uuid references Artifacts(oid) ON DELETE CASCADE,
metric_oid uuid references Metrics(oid), metric_oid uuid references Metrics(oid) ON DELETE CASCADE,
job_oid uuid references Jobs(oid), job_oid uuid references Jobs(oid) ON DELETE CASCADE,
run_oid uuid references Runs(oid), run_oid uuid references Runs(oid) ON DELETE CASCADE,
key text, key text,
value text, value text,
PRIMARY KEY (oid) PRIMARY KEY (oid)
@ -183,7 +189,7 @@ CREATE TABLE Classifiers (
CREATE TABLE Parameters ( CREATE TABLE Parameters (
oid uuid NOT NULL, oid uuid NOT NULL,
run_oid uuid NOT NULL references Runs(oid), run_oid uuid NOT NULL references Runs(oid) ON DELETE CASCADE,
job_oid uuid references Jobs(oid), job_oid uuid references Jobs(oid),
augmentation_oid uuid references Augmentations(oid), augmentation_oid uuid references Augmentations(oid),
resource_getter_oid uuid references Resource_Getters(oid), resource_getter_oid uuid references Resource_Getters(oid),

View File

@ -0,0 +1,109 @@
ALTER TABLE jobs
DROP CONSTRAINT jobs_run_oid_fkey,
ADD CONSTRAINT jobs_run_oid_fkey
FOREIGN KEY (run_oid)
REFERENCES runs(oid)
ON DELETE CASCADE
;
ALTER TABLE targets
DROP CONSTRAINT targets_run_oid_fkey,
ADD CONSTRAINT targets_run_oid_fkey
FOREIGN KEY (run_oid)
REFERENCES runs(oid)
ON DELETE CASCADE
;
ALTER TABLE events
DROP CONSTRAINT events_run_oid_fkey,
ADD CONSTRAINT events_run_oid_fkey
FOREIGN KEY (run_oid)
REFERENCES runs(oid)
ON DELETE CASCADE
;
ALTER TABLE resource_getters
DROP CONSTRAINT resource_getters_run_oid_fkey,
ADD CONSTRAINT resource_getters_run_oid_fkey
FOREIGN KEY (run_oid)
REFERENCES runs(oid)
ON DELETE CASCADE
;
ALTER TABLE augmentations
DROP CONSTRAINT augmentations_run_oid_fkey,
ADD CONSTRAINT augmentations_run_oid_fkey
FOREIGN KEY (run_oid)
REFERENCES runs(oid)
ON DELETE CASCADE
;
ALTER TABLE jobs_augs
DROP CONSTRAINT jobs_augs_job_oid_fkey,
DROP CONSTRAINT jobs_augs_augmentation_oid_fkey,
ADD CONSTRAINT jobs_augs_job_oid_fkey
FOREIGN KEY (job_oid)
REFERENCES Jobs(oid)
ON DELETE CASCADE,
ADD CONSTRAINT jobs_augs_augmentation_oid_fkey
FOREIGN KEY (augmentation_oid)
REFERENCES Augmentations(oid)
ON DELETE CASCADE
;
ALTER TABLE metrics
DROP CONSTRAINT metrics_run_oid_fkey,
ADD CONSTRAINT metrics_run_oid_fkey
FOREIGN KEY (run_oid)
REFERENCES runs(oid)
ON DELETE CASCADE
;
ALTER TABLE artifacts
DROP CONSTRAINT artifacts_run_oid_fkey,
ADD CONSTRAINT artifacts_run_oid_fkey
FOREIGN KEY (run_oid)
REFERENCES runs(oid)
ON DELETE CASCADE
;
CREATE RULE del_lo AS
ON DELETE TO Artifacts
DO DELETE FROM LargeObjects
WHERE LargeObjects.oid = old.large_object_uuid
;
ALTER TABLE classifiers
DROP CONSTRAINT classifiers_artifact_oid_fkey,
DROP CONSTRAINT classifiers_metric_oid_fkey,
DROP CONSTRAINT classifiers_job_oid_fkey,
DROP CONSTRAINT classifiers_run_oid_fkey,
ADD CONSTRAINT classifiers_artifact_oid_fkey
FOREIGN KEY (artifact_oid)
REFERENCES artifacts(oid)
ON DELETE CASCADE,
ADD CONSTRAINT classifiers_metric_oid_fkey
FOREIGN KEY (metric_oid)
REFERENCES metrics(oid)
ON DELETE CASCADE,
ADD CONSTRAINT classifiers_job_oid_fkey
FOREIGN KEY (job_oid)
REFERENCES jobs(oid)
ON DELETE CASCADE,
ADD CONSTRAINT classifiers_run_oid_fkey
FOREIGN KEY (run_oid)
REFERENCES runs(oid)
ON DELETE CASCADE
;
ALTER TABLE parameters
DROP CONSTRAINT parameters_run_oid_fkey,
ADD CONSTRAINT parameters_run_oid_fkey
FOREIGN KEY (run_oid)
REFERENCES runs(oid)
ON DELETE CASCADE
;

View File

@ -22,3 +22,7 @@
during the run. during the run.
## 1.5 ## 1.5
- Change the type of the "hostid" in TargetInfo from Int to Bigint. - Change the type of the "hostid" in TargetInfo from Int to Bigint.
## 1.6
- Add cascading deletes to most tables to allow easy deletion of a run
and its associated data
- Add rule to delete associated large object on deletion of artifact