# Pastebin vvYwloXt CREATE OR REPLACE FUNCTION update_tag_counts_for_raw_insert() RETURNS trigger AS $$ DECLARE entity_type taggable_entity_type; new_entity_id INTEGER; is_spammer BOOLEAN; BEGIN EXECUTE 'SELECT EXISTS (SELECT TRUE FROM editor WHERE id = $1 AND (privs::bit(32) & 4096::bit(32))::int > 0)' INTO is_spammer USING NEW.editor; IF NOT is_spammer THEN entity_type := TG_ARGV[0]::taggable_entity_type; EXECUTE format('SELECT ($1).%s', entity_type::TEXT) INTO new_entity_id USING NEW; PERFORM update_aggregate_tag_count(entity_type, new_entity_id, NEW.tag, (CASE WHEN NEW.is_upvote THEN 1 ELSE -1 END)::SMALLINT); UPDATE tag SET ref_count = ref_count + 1 WHERE id = NEW.tag; END IF RETURN NULL; END; $$ LANGUAGE 'plpgsql';