2008-11-12 05:45:18 +00:00
|
|
|
-- Before this will execute, you need to run the following command as the
|
|
|
|
-- PostgreSQL superuser (usually "postgres"):
|
|
|
|
-- echo "create language plpgsql;" | psql luminotes
|
|
|
|
create function log_note_revision() returns trigger as $_$
|
|
|
|
begin
|
|
|
|
insert into note values
|
|
|
|
( NEW.id, NEW.revision, NEW.title, NEW.contents, NEW.notebook_id, NEW.startup,
|
|
|
|
NEW.deleted_from_id, NEW.rank, NEW.user_id );
|
|
|
|
return null;
|
|
|
|
end;
|
|
|
|
$_$ language plpgsql;
|
2008-11-10 20:32:02 +00:00
|
|
|
create index session_id_index on session using btree (id);
|
2008-11-12 05:45:18 +00:00
|
|
|
create index note_user_id_index on note USING btree (user_id);
|
|
|
|
CREATE TABLE note_current_new (
|
|
|
|
id text NOT NULL,
|
|
|
|
revision timestamp with time zone NOT NULL,
|
|
|
|
title text,
|
|
|
|
contents text,
|
|
|
|
notebook_id text,
|
|
|
|
startup boolean DEFAULT false,
|
|
|
|
deleted_from_id text,
|
|
|
|
rank numeric,
|
|
|
|
search tsvector,
|
|
|
|
user_id text
|
|
|
|
);
|
|
|
|
insert into note_current_new select * from note_current;
|
|
|
|
drop view note_current;
|
|
|
|
alter table note_current_new rename to note_current;
|
|
|
|
ALTER TABLE ONLY note_current ADD CONSTRAINT note_current_pkey PRIMARY KEY (id);
|
|
|
|
CREATE INDEX note_current_notebook_id_index ON note_current USING btree (notebook_id);
|
|
|
|
CREATE INDEX note_current_notebook_id_startup_index ON note_current USING btree (notebook_id, startup);
|
|
|
|
CREATE INDEX note_current_notebook_id_title_index ON note_current USING btree (notebook_id, md5(title));
|
|
|
|
create index note_current_user_id_index on note_current USING btree (user_id);
|
|
|
|
drop trigger search_update on note;
|
|
|
|
drop index search_index;
|
|
|
|
alter table note drop column search;
|
|
|
|
update note_current set search = to_tsvector('default', coalesce(title,'') ||' '|| coalesce(contents,'') );
|
|
|
|
commit;
|
|
|
|
vacuum full analyze;
|
|
|
|
start transaction;
|
|
|
|
create index note_current_search_index on note_current USING gist (search);
|
|
|
|
commit;
|
|
|
|
vacuum full analyze;
|
|
|
|
start transaction;
|
|
|
|
CREATE TRIGGER search_update
|
|
|
|
BEFORE INSERT OR UPDATE ON note_current
|
|
|
|
FOR EACH ROW
|
|
|
|
EXECUTE PROCEDURE tsearch2('search', 'drop_html_tags', 'title', 'contents');
|
|
|
|
CREATE TRIGGER note_current_update
|
|
|
|
AFTER INSERT OR UPDATE ON note_current
|
|
|
|
FOR EACH ROW
|
|
|
|
EXECUTE PROCEDURE log_note_revision();
|