tasks/database/upgrade/from-205130326245fa8175bc390ce58b387b92d568a7.sql
Emmanuel BENOîT bca6b99068 Fixed bug in finish_task()
Due to an error on a column name, finish_task() was broken. It has been
fixed.
2012-02-15 10:58:55 +01:00

41 lines
1,002 B
PL/PgSQL

--
-- Upgrade the database from commit ID 205130326245fa8175bc390ce58b387b92d568a7
--
-- Run this from the top-level directory
--
\i database/config.sql
\c :db_name
BEGIN;
DROP FUNCTION finish_task( INT , INT , TEXT );
CREATE FUNCTION finish_task( t_id INT , u_id INT , n_text TEXT )
RETURNS INT
STRICT VOLATILE
SECURITY INVOKER
AS $finish_task$
BEGIN
PERFORM 1 FROM tasks_single_view t
WHERE id = t_id AND badness = 0;
IF NOT FOUND THEN
RETURN 2;
END IF;
BEGIN
INSERT INTO completed_tasks ( task_id , user_id )
VALUES ( t_id , u_id );
EXCEPTION
WHEN unique_violation THEN
RETURN 1;
END;
UPDATE tasks SET user_id_assigned = NULL WHERE task_id = t_id;
INSERT INTO notes ( task_id , user_id , note_text )
VALUES ( t_id , u_id , n_text );
RETURN 0;
END;
$finish_task$ LANGUAGE plpgsql;
REVOKE EXECUTE ON FUNCTION finish_task( INT , INT , TEXT ) FROM PUBLIC;
GRANT EXECUTE ON FUNCTION finish_task( INT , INT , TEXT ) TO :webapp_user;
COMMIT;