diff options
author | alecpl <alec@alec.pl> | 2011-09-07 11:07:03 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2011-09-07 11:07:03 +0000 |
commit | 80152b333ca5d856dcf09f5ca10a9ffd80ba117f (patch) | |
tree | 084aa3c8aabb3d2b1783dbb01170840ccefc0c62 /SQL/postgres.initial.sql | |
parent | b104e39f3425faf77cae67101c734fcfc3b0c1e9 (diff) |
- Rewritten messages caching (merged devel-mcache branch):
Indexes are stored in a separate table, so there's no need to store all messages in a folder
Added threads data caching
Flags are stored separately, so flag change doesn't cause DELETE+INSERT, just UPDATE
- Partial QRESYNC support
- Improved FETCH response handling
- Improvements in response tokenization method
Diffstat (limited to 'SQL/postgres.initial.sql')
-rw-r--r-- | SQL/postgres.initial.sql | 76 |
1 files changed, 46 insertions, 30 deletions
diff --git a/SQL/postgres.initial.sql b/SQL/postgres.initial.sql index 01221c4e3..a1864c6c9 100644 --- a/SQL/postgres.initial.sql +++ b/SQL/postgres.initial.sql @@ -67,7 +67,7 @@ CREATE SEQUENCE identity_ids CREATE TABLE identities ( identity_id integer DEFAULT nextval('identity_ids'::text) PRIMARY KEY, user_id integer NOT NULL - REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, changed timestamp with time zone DEFAULT now() NOT NULL, del smallint DEFAULT 0 NOT NULL, standard smallint DEFAULT 0 NOT NULL, @@ -178,7 +178,7 @@ CREATE SEQUENCE cache_ids CREATE TABLE "cache" ( cache_id integer DEFAULT nextval('cache_ids'::text) PRIMARY KEY, user_id integer NOT NULL - REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, cache_key varchar(128) DEFAULT '' NOT NULL, created timestamp with time zone DEFAULT now() NOT NULL, data text NOT NULL @@ -188,43 +188,59 @@ CREATE INDEX cache_user_id_idx ON "cache" (user_id, cache_key); CREATE INDEX cache_created_idx ON "cache" (created); -- --- Sequence "message_ids" --- Name: message_ids; Type: SEQUENCE; Schema: public; Owner: postgres +-- Table "cache_index" +-- Name: cache_index; Type: TABLE; Schema: public; Owner: postgres -- -CREATE SEQUENCE message_ids - INCREMENT BY 1 - NO MAXVALUE - NO MINVALUE - CACHE 1; +CREATE TABLE cache_index ( + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + mailbox varchar(255) NOT NULL, + changed timestamp with time zone DEFAULT now() NOT NULL, + data text NOT NULL, + PRIMARY KEY (user_id, mailbox) +); + +CREATE INDEX cache_index_changed_idx ON cache_index (changed); -- --- Table "messages" --- Name: messages; Type: TABLE; Schema: public; Owner: postgres +-- Table "cache_thread" +-- Name: cache_thread; Type: TABLE; Schema: public; Owner: postgres -- -CREATE TABLE messages ( - message_id integer DEFAULT nextval('message_ids'::text) PRIMARY KEY, +CREATE TABLE cache_thread ( user_id integer NOT NULL - REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, - del smallint DEFAULT 0 NOT NULL, - cache_key varchar(128) DEFAULT '' NOT NULL, - created timestamp with time zone DEFAULT now() NOT NULL, - idx integer DEFAULT 0 NOT NULL, - uid integer DEFAULT 0 NOT NULL, - subject varchar(128) DEFAULT '' NOT NULL, - "from" varchar(128) DEFAULT '' NOT NULL, - "to" varchar(128) DEFAULT '' NOT NULL, - cc varchar(128) DEFAULT '' NOT NULL, - date timestamp with time zone NOT NULL, - size integer DEFAULT 0 NOT NULL, - headers text NOT NULL, - structure text, - CONSTRAINT messages_user_id_key UNIQUE (user_id, cache_key, uid) + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + mailbox varchar(255) NOT NULL, + changed timestamp with time zone DEFAULT now() NOT NULL, + data text NOT NULL, + PRIMARY KEY (user_id, mailbox) +); + +CREATE INDEX cache_thread_changed_idx ON cache_thread (changed); + +-- +-- Table "cache_messages" +-- Name: cache_messages; Type: TABLE; Schema: public; Owner: postgres +-- + +CREATE TABLE cache_messages ( + user_id integer NOT NULL + REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE, + mailbox varchar(255) NOT NULL, + uid integer NOT NULL, + changed timestamp with time zone DEFAULT now() NOT NULL, + data text NOT NULL, + seen smallint NOT NULL DEFAULT 0, + deleted smallint NOT NULL DEFAULT 0, + answered smallint NOT NULL DEFAULT 0, + forwarded smallint NOT NULL DEFAULT 0, + flagged smallint NOT NULL DEFAULT 0, + mdnsent smallint NOT NULL DEFAULT 0, + PRIMARY KEY (user_id, mailbox, uid) ); -CREATE INDEX messages_index_idx ON messages (user_id, cache_key, idx); -CREATE INDEX messages_created_idx ON messages (created); +CREATE INDEX cache_messages_changed_idx ON cache_messages (changed); -- -- Table "dictionary" |