[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gforge-commits] gforge/db 20040914.sql,NONE,1.1
From: |
tperdue |
Subject: |
[Gforge-commits] gforge/db 20040914.sql,NONE,1.1 |
Date: |
Tue, 14 Sep 2004 23:49:55 -0500 |
Update of /cvsroot/gforge/gforge/db
In directory db.perdue.net:/home/tperdue/share/dev.gforge.org/db
Added Files:
20040914.sql
Log Message:
initial commit of stored procs to add counters to taskman
--- NEW FILE: 20040914.sql ---
CREATE TABLE project_counts_agg (
group_project_id integer NOT NULL,
count integer DEFAULT 0 NOT NULL,
open_count integer DEFAULT 0
);
INSERT INTO project_counts_agg
SELECT group_project_id,
(SELECT count(*) FROM project_task WHERE status_id != 3 AND
project_task.group_project_id=project_group_list.group_project_id),
(SELECT count(*) FROM project_task WHERE status_id = 2 AND
project_task.group_project_id=project_group_list.group_project_id)
FROM project_group_list;
CREATE FUNCTION projectgrouplist_insert_agg () RETURNS opaque AS '
BEGIN
INSERT INTO project_counts_agg (group_project_id,count,open_count)
VALUES (NEW.group_project_id,0,0);
RETURN NEW;
END;
' LANGUAGE 'plpgsql';
CREATE FUNCTION projectgroup_update_agg () RETURNS opaque AS '
BEGIN
--
-- see if they are moving to a new subproject
-- if so, its a more complex operation
--
IF NEW.group_project_id <> OLD.group_project_id THEN
--
-- transferred tasks always have a status of 1
-- so we will increment the new subprojects sums
--
IF OLD.status_id=3 THEN
-- No need to decrement counters on old tracker
ELSE
IF OLD.status_id=2 THEN
UPDATE project_counts_agg SET count=count-1
WHERE group_project_id=OLD.group_project_id;
ELSE
IF OLD.status_id=1 THEN
UPDATE project_counts_agg SET
count=count-1,open_count=open_count-1
WHERE group_project_id=OLD.group_project_id;
END IF;
END IF;
END IF;
IF NEW.status_id=3 THEN
--DO NOTHING
ELSE
IF NEW.status_id=2 THEN
UPDATE project_counts_agg SET count=count+1
WHERE group_project_id=NEW.group_project_id;
ELSE
IF NEW.status_id=1 THEN
UPDATE project_counts_agg SET count=count+1,
open_count=open_count+1
WHERE group_project_id=NEW.group_project_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 project_counts_agg SET open_count=open_count+1
WHERE group_project_id=NEW.group_project_id;
ELSE
IF OLD.status_id=3 THEN
UPDATE project_counts_agg SET open_count=open_count+1,
count=count+1
WHERE group_project_id=NEW.group_project_id;
END IF;
END IF;
ELSE
IF NEW.status_id = 2 THEN
IF OLD.status_id=1 THEN
UPDATE project_counts_agg SET open_count=open_count-1
WHERE group_project_id=NEW.group_project_id;
ELSE
IF OLD.status_id=3 THEN
UPDATE project_counts_agg SET count=count+1
WHERE group_project_id=NEW.group_project_id;
END IF;
END IF;
ELSE
IF NEW.status_id = 3 THEN
IF OLD.status_id=2 THEN
UPDATE project_counts_agg SET count=count-1
WHERE group_project_id=NEW.group_project_id;
ELSE
IF OLD.status_id=1 THEN
UPDATE project_counts_agg SET
open_count=open_count-1,count=count-1
WHERE group_project_id=NEW.group_project_id;
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
RETURN NEW;
END;
' LANGUAGE 'plpgsql';
CREATE TRIGGER projectgrouplist_insert_trig AFTER INSERT ON artifact_group_list
FOR EACH ROW EXECUTE PROCEDURE projectgrouplist_insert_agg ();
CREATE TRIGGER projectgroup_update_trig AFTER UPDATE ON artifact
FOR EACH ROW EXECUTE PROCEDURE projectgroup_update_agg ();
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gforge-commits] gforge/db 20040914.sql,NONE,1.1,
tperdue <=
- Prev by Date:
[Gforge-commits] gforge/www/mail index.php, 1.10, 1.11 mail_utils.php, 1.5, 1.6
- Next by Date:
[Gforge-commits] gforge/db 20040914.sql,1.1,1.2
- Previous by thread:
[Gforge-commits] gforge/www/mail index.php, 1.10, 1.11 mail_utils.php, 1.5, 1.6
- Next by thread:
[Gforge-commits] gforge/db 20040914.sql,1.1,1.2
- Index(es):