/usr/share/gforge/db/20030822.sql is in gforge-db-postgresql 5.3.2+20141104-3+deb8u3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | DROP TRIGGER artifactgroup_update_trig ON artifact;
DROP FUNCTION artifactgroup_update_agg();
CREATE OR REPLACE FUNCTION artifactgroup_update_agg () RETURNS OPAQUE AS '
BEGIN
--
-- see if they are moving to a new artifacttype
-- if so, its a more complex operation
--
IF NEW.group_artifact_id <> OLD.group_artifact_id THEN
--
-- transferred artifacts always have a status of 1
-- so we will increment the new artifacttypes sums
--
IF OLD.status_id=3 THEN
-- No need to decrement counters on old tracker
ELSE
IF OLD.status_id=2 THEN
UPDATE artifact_counts_agg SET count=count-1 \
WHERE group_artifact_id=OLD.group_artifact_id;
ELSE
IF OLD.status_id=1 THEN
UPDATE artifact_counts_agg SET count=count-1,open_count=open_count-1 \
WHERE group_artifact_id=OLD.group_artifact_id;
END IF;
END IF;
END IF;
IF NEW.status_id=3 THEN
--DO NOTHING
ELSE
IF NEW.status_id=2 THEN
UPDATE artifact_counts_agg SET count=count+1 \
WHERE group_artifact_id=NEW.group_artifact_id;
ELSE
IF NEW.status_id=1 THEN
UPDATE artifact_counts_agg SET count=count+1, open_count=open_count+1 \
WHERE group_artifact_id=NEW.group_artifact_id;
END IF;
END IF;
END IF;
ELSE
--
-- just need to evaluate the status flag and
-- increment/decrement the counter as necessary
--
IF NEW.status_id <> OLD.status_id THEN
IF NEW.status_id = 1 THEN
IF OLD.status_id=2 THEN
UPDATE artifact_counts_agg SET open_count=open_count+1 \
WHERE group_artifact_id=NEW.group_artifact_id;
ELSE
IF OLD.status_id=3 THEN
UPDATE artifact_counts_agg SET open_count=open_count+1, count=count+1 \
WHERE group_artifact_id=NEW.group_artifact_id;
END IF;
END IF;
ELSE
IF NEW.status_id = 2 THEN
IF OLD.status_id=1 THEN
UPDATE artifact_counts_agg SET open_count=open_count-1 \
WHERE group_artifact_id=NEW.group_artifact_id;
ELSE
IF OLD.status_id=3 THEN
UPDATE artifact_counts_agg SET count=count+1 \
WHERE group_artifact_id=NEW.group_artifact_id;
END IF;
END IF;
ELSE
IF NEW.status_id = 3 THEN
IF OLD.status_id=2 THEN
UPDATE artifact_counts_agg SET count=count-1 \
WHERE group_artifact_id=NEW.group_artifact_id;
ELSE
IF OLD.status_id=1 THEN
UPDATE artifact_counts_agg SET open_count=open_count-1,count=count-1 \
WHERE group_artifact_id=NEW.group_artifact_id;
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
RETURN NEW;
END;
' LANGUAGE 'plpgsql';
CREATE TRIGGER "artifactgroup_update_trig" AFTER UPDATE ON "artifact" FOR EACH ROW EXECUTE PROCEDURE "artifactgroup_update_agg" ();
|