CREATE FOREIGN TABLE public.issue_es ( id bigint NOT NULL, repo_id bigint, index bigint, poster_id bigint, original_author character varying(255), original_author_id bigint, name character varying(255) , content text, comment text, milestone_id bigint, priority integer, is_closed boolean, is_pull boolean, pr_id bigint, num_comments integer, ref character varying(255), deadline_unix bigint, created_unix bigint, updated_unix bigint, closed_unix bigint, is_locked boolean NOT NULL, amount bigint, is_transformed boolean NOT NULL )SERVER multicorn_es OPTIONS ( host '192.168.207.94', port '9200', index 'user_es-index', rowid_column 'id' ) ; CREATE OR REPLACE FUNCTION public.insert_issue_data() RETURNS trigger AS $def$ BEGIN INSERT INTO public.issue_es( id, repo_id, index, poster_id, original_author, original_author_id, name, content, milestone_id, priority, is_closed, is_pull, num_comments, ref, deadline_unix, created_unix, updated_unix, closed_unix, is_locked, amount, is_transformed) VALUES ( NEW.id, NEW.repo_id, NEW.index, NEW.poster_id, NEW.original_author, NEW.original_author_id, NEW.name, NEW.content, NEW.milestone_id, NEW.priority, NEW.is_closed, NEW.is_pull, NEW.num_comments, NEW.ref, NEW.deadline_unix, NEW.created_unix, NEW.updated_unix, NEW.closed_unix, NEW.is_locked, NEW.amount, NEW.is_transformed ); RETURN NEW; END; $def$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS es_insert_issue on public.issue; CREATE TRIGGER es_insert_issue AFTER INSERT ON public.issue FOR EACH ROW EXECUTE PROCEDURE insert_issue_data(); CREATE OR REPLACE FUNCTION public.udpate_issue_comment() RETURNS trigger AS $def$ BEGIN if (TG_OP = 'DELETE') then update public.issue_es SET comment=(select array_to_string(array_agg(content order by created_unix desc),',') from public.comment where issue_id=OLD.issue_id) where id=OLD.issue_id; elsif (TG_OP = 'INSERT') then update public.issue_es SET comment=(select array_to_string(array_agg(content order by created_unix desc),',') from public.comment where issue_id=NEW.issue_id) where id=NEW.issue_id; elsif (TG_OP = 'UPDATE') then update public.issue_es SET comment=(select array_to_string(array_agg(content order by created_unix desc),',') from public.comment where issue_id=NEW.issue_id) where id=NEW.issue_id; end if; return null; END; $def$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS es_udpate_issue_comment on public.comment; CREATE TRIGGER es_udpate_issue_comment AFTER INSERT OR DELETE OR UPDATE ON public.comment FOR EACH ROW EXECUTE PROCEDURE udpate_issue_comment(); CREATE OR REPLACE FUNCTION public.update_issue_content() RETURNS trigger AS $def$ declare BEGIN UPDATE public.issue_es SET content=NEW.content where id=NEW.id; return new; END $def$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS es_update_issue_content on public.issue; CREATE TRIGGER es_update_issue_content AFTER UPDATE OF "content" ON public.issue FOR EACH ROW EXECUTE PROCEDURE update_issue_content(); CREATE OR REPLACE FUNCTION public.update_issue_name() RETURNS trigger AS $def$ declare BEGIN UPDATE public.issue_es SET name=NEW.name where id=NEW.id; return new; END $def$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS es_update_issue_name on public.issue; CREATE TRIGGER es_update_issue_name AFTER UPDATE OF "name" ON public.issue FOR EACH ROW EXECUTE PROCEDURE update_issue_name(); CREATE OR REPLACE FUNCTION public.update_issue_is_closed() RETURNS trigger AS $def$ declare BEGIN UPDATE public.issue_es SET is_closed=NEW.is_closed where id=NEW.id; return new; END $def$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS es_update_issue_is_closed on public.issue; CREATE TRIGGER es_update_issue_is_closed AFTER UPDATE OF "is_closed" ON public.issue FOR EACH ROW EXECUTE PROCEDURE update_issue_is_closed(); CREATE OR REPLACE FUNCTION public.update_issue_num_comments() RETURNS trigger AS $def$ declare BEGIN UPDATE public.issue_es SET num_comments=NEW.num_comments where id=NEW.id; return new; END $def$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS es_update_issue_num_comments on public.issue; CREATE TRIGGER es_update_issue_num_comments AFTER UPDATE OF "num_comments" ON public.issue FOR EACH ROW EXECUTE PROCEDURE update_issue_num_comments(); CREATE OR REPLACE FUNCTION public.delete_issue() RETURNS trigger AS $def$ declare BEGIN DELETE FROM public.issue_es where id=OLD.id; return new; END $def$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS es_delete_issue on public.issue; CREATE TRIGGER es_delete_issue AFTER DELETE ON public.issue FOR EACH ROW EXECUTE PROCEDURE delete_issue();