-- Update comment_aggregates_score trigger function to exclude controversy_rank update create or replace function comment_aggregates_score() returns trigger language plpgsql as $$ begin IF (TG_OP = 'INSERT') THEN update comment_aggregates ca set score = score + NEW.score, upvotes = case when NEW.score = 1 then upvotes + 1 else upvotes end, downvotes = case when NEW.score = -1 then downvotes + 1 else downvotes end where ca.comment_id = NEW.comment_id; ELSIF (TG_OP = 'DELETE') THEN -- Join to comment because that comment may not exist anymore update comment_aggregates ca set score = score - OLD.score, upvotes = case when OLD.score = 1 then upvotes - 1 else upvotes end, downvotes = case when OLD.score = -1 then downvotes - 1 else downvotes end from comment c where ca.comment_id = c.id and ca.comment_id = OLD.comment_id; END IF; return null; end $$; -- Update post_aggregates_score trigger function to exclude controversy_rank update create or replace function post_aggregates_score() returns trigger language plpgsql as $$ begin IF (TG_OP = 'INSERT') THEN update post_aggregates pa set score = score + NEW.score, upvotes = case when NEW.score = 1 then upvotes + 1 else upvotes end, downvotes = case when NEW.score = -1 then downvotes + 1 else downvotes end where pa.post_id = NEW.post_id; ELSIF (TG_OP = 'DELETE') THEN -- Join to post because that post may not exist anymore update post_aggregates pa set score = score - OLD.score, upvotes = case when OLD.score = 1 then upvotes - 1 else upvotes end, downvotes = case when OLD.score = -1 then downvotes - 1 else downvotes end from post p where pa.post_id = p.id and pa.post_id = OLD.post_id; END IF; return null; end $$; -- Drop the indexes drop index if exists idx_post_aggregates_featured_local_controversy; drop index if exists idx_post_aggregates_featured_community_controversy; drop index if exists idx_comment_aggregates_controversy; -- Remove the added columns from the tables alter table post_aggregates drop column controversy_rank; alter table comment_aggregates drop column controversy_rank; -- Remove function drop function controversy_rank(numeric, numeric);