LQPP/patch core123 function global lock 20100815-2.sql
Aus Piratenwiki
< LQPP
CREATE OR REPLACE FUNCTION "global_lock"() RETURNS VOID
LANGUAGE 'plpgsql' VOLATILE AS $$
BEGIN
-- NOTE: PostgreSQL allows reading, while tables are locked in
-- exclusive move. Transactions should be kept short anyway!
LOCK TABLE "member" IN SHARE ROW EXCLUSIVE MODE;
LOCK TABLE "area" IN EXCLUSIVE MODE;
LOCK TABLE "membership" IN SHARE ROW EXCLUSIVE MODE;
-- NOTE: "member", "area" and "membership" are locked first to
-- prevent deadlocks in combination with "calculate_member_counts"()
LOCK TABLE "policy" IN EXCLUSIVE MODE;
LOCK TABLE "issue" IN EXCLUSIVE MODE;
LOCK TABLE "initiative" IN EXCLUSIVE MODE;
LOCK TABLE "draft" IN EXCLUSIVE MODE;
LOCK TABLE "suggestion" IN EXCLUSIVE MODE;
LOCK TABLE "interest" IN SHARE ROW EXCLUSIVE MODE;
LOCK TABLE "initiator" IN EXCLUSIVE MODE;
LOCK TABLE "supporter" IN EXCLUSIVE MODE;
LOCK TABLE "opinion" IN EXCLUSIVE MODE;
LOCK TABLE "delegation" IN EXCLUSIVE MODE;
LOCK TABLE "direct_population_snapshot" IN EXCLUSIVE MODE;
LOCK TABLE "delegating_population_snapshot" IN EXCLUSIVE MODE;
LOCK TABLE "direct_interest_snapshot" IN EXCLUSIVE MODE;
LOCK TABLE "delegating_interest_snapshot" IN EXCLUSIVE MODE;
LOCK TABLE "direct_supporter_snapshot" IN EXCLUSIVE MODE;
LOCK TABLE "direct_voter" IN EXCLUSIVE MODE;
LOCK TABLE "delegating_voter" IN EXCLUSIVE MODE;
LOCK TABLE "vote" IN EXCLUSIVE MODE;
RETURN;
END;
$$;
