| 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(); |
|---|