Ticket #647: Proc.sql

File Proc.sql, 1.3 kB (added by nik_js@hotmail.com, 2 years ago)

Stored Procedure to Fix Migrated Ticket bug

Line 
1 CREATE OR REPLACE FUNCTION sortticketchange() RETURNS int4 AS
2 $BODY$
3 DECLARE
4         ticket_row ticket%ROWTYPE;
5         ticket_change_row ticket_change%ROWTYPE;
6         counter int4;
7         time_row ticket_change%ROWTYPE;
8         hascomment int4;
9         authortext varchar;
10 BEGIN
11         FOR ticket_row IN SELECT * FROM ticket WHERE id > 1 LOOP
12
13                 counter = 1;
14                        
15                 FOR time_row IN SELECT DISTINCT(time) AS time FROM ticket_change WHERE ticket = ticket_row.id LOOP
16
17                         RAISE NOTICE '%', time_row.ticket;
18
19                         SELECT INTO hascomment COUNT(*) FROM ticket_change WHERE ticket = ticket_row.id AND ticket_change.time = time_row.ticket AND ticket_change.field = 'comment';
20
21                         IF hascomment = 1 THEN 
22                                
23                                 UPDATE ticket_change SET oldvalue = counter WHERE ticket = ticket_row.id AND time = time_row.ticket;
24                                 RAISE NOTICE 'UPDATING %', ticket_row.id;
25
26                         ELSE
27
28                                 SELECT INTO authortext MIN(author) FROM ticket_change WHERE ticket = ticket_row.id AND time = time_row.ticket;
29
30                                 INSERT INTO ticket_change(ticket, time, author, field, oldvalue)
31                                 VALUES (ticket_row.id, time_row.ticket, authortext, 'comment', counter);
32                                 RAISE NOTICE 'INSERTING %', ticket_row.id;
33
34                         END IF;                 
35
36                         counter = counter + 1;
37
38                 END LOOP;
39
40         END LOOP;
41
42         RETURN 1;
43
44 END;
45 $BODY$
46 LANGUAGE PLPGSQL;
47
48 SELECT * FROM sortticketchange();