diff options
| author | alec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2008-11-21 14:33:58 +0000 |
|---|---|---|
| committer | alec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2008-11-21 14:33:58 +0000 |
| commit | c8fb75d8b8c4b52b2460e71b91146cbcb579410a (patch) | |
| tree | 01fd7db910d680634656b5691e9796538f1b1ceb | |
| parent | 685b4ae56fe7da703f3dd8e7de692ec08b34ff7c (diff) | |
- Fix 'cache' table cleanup on session destroy (#1485516)
git-svn-id: https://svn.roundcube.net/trunk@2075 208e9e7b-5314-0410-a742-e7e81cd9613c
| -rw-r--r-- | roundcubemail/CHANGELOG | 4 | ||||
| -rw-r--r-- | roundcubemail/SQL/mysql.update.sql | 8 | ||||
| -rw-r--r-- | roundcubemail/SQL/mysql5.initial.sql | 4 | ||||
| -rw-r--r-- | roundcubemail/SQL/postgres.initial.sql | 3 | ||||
| -rw-r--r-- | roundcubemail/SQL/postgres.update.sql | 6 | ||||
| -rw-r--r-- | roundcubemail/program/include/rcube_imap.php | 11 |
6 files changed, 30 insertions, 6 deletions
diff --git a/roundcubemail/CHANGELOG b/roundcubemail/CHANGELOG index 775379d64..de8b879fc 100644 --- a/roundcubemail/CHANGELOG +++ b/roundcubemail/CHANGELOG @@ -1,6 +1,10 @@ CHANGELOG RoundCube Webmail --------------------------- +2008/11/21 (alec) +---------- +- Fix 'cache' table cleanup on session destroy (#1485516) + 2008/11/19 (alec) ---------- - Fix handling of some malformed messages (#1484438) diff --git a/roundcubemail/SQL/mysql.update.sql b/roundcubemail/SQL/mysql.update.sql index ae6fb7533..f88a6c4db 100644 --- a/roundcubemail/SQL/mysql.update.sql +++ b/roundcubemail/SQL/mysql.update.sql @@ -30,3 +30,11 @@ ALTER TABLE `identities` ALTER TABLE `messages` ADD INDEX `created_index` (`created`); + +-- Updates from version 0.2-beta (InnoDB only) + +ALTER TABLE `cache` + ADD CONSTRAINT `session_id_fk_cache` FOREIGN KEY (`session_id`) + REFERENCES `session`(`sess_id`) + ON DELETE CASCADE + ON UPDATE CASCADE; diff --git a/roundcubemail/SQL/mysql5.initial.sql b/roundcubemail/SQL/mysql5.initial.sql index f9d647b80..e01f2a6b1 100644 --- a/roundcubemail/SQL/mysql5.initial.sql +++ b/roundcubemail/SQL/mysql5.initial.sql @@ -77,6 +77,10 @@ CREATE TABLE `cache` ( CONSTRAINT `user_id_fk_cache` FOREIGN KEY (`user_id`) REFERENCES `users`(`user_id`) ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT `session_id_fk_cache` FOREIGN KEY (`session_id`) + REFERENCES `session`(`sess_id`) + ON DELETE CASCADE ON UPDATE CASCADE ) TYPE=INNODB CHARACTER SET utf8 COLLATE utf8_general_ci; diff --git a/roundcubemail/SQL/postgres.initial.sql b/roundcubemail/SQL/postgres.initial.sql index 88f12af66..e53caa187 100644 --- a/roundcubemail/SQL/postgres.initial.sql +++ b/roundcubemail/SQL/postgres.initial.sql @@ -128,13 +128,14 @@ 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, - session_id character varying(40) REFERENCES "session" (sess_id), + session_id character varying(40) REFERENCES "session" (sess_id) ON DELETE CASCADE ON UPDATE CASCADE, cache_key character varying(128) DEFAULT ''::character varying NOT NULL, created timestamp with time zone DEFAULT now() NOT NULL, data text NOT NULL ); CREATE INDEX cache_user_id_idx ON "cache" (user_id, cache_key); +CREATE INDEX cache_session_id_idx ON "cache" (session_id); -- -- Sequence "message_ids" diff --git a/roundcubemail/SQL/postgres.update.sql b/roundcubemail/SQL/postgres.update.sql index dfc282b4a..fdd7f0f5e 100644 --- a/roundcubemail/SQL/postgres.update.sql +++ b/roundcubemail/SQL/postgres.update.sql @@ -21,3 +21,9 @@ ALTER TABLE cache ADD FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE -- Updates from version 0.2-alpha CREATE INDEX messages_created_idx ON messages (created); + +-- Updates from version 0.2-beta + +ALTER TABLE cache DROP CONSTRAINT cache_session_id_fkey; +ALTER TABLE cache ADD FOREIGN KEY (session_id) REFERENCES session(sess_id) ON DELETE CASCADE ON UPDATE CASCADE; +CREATE INDEX cache_session_id_idx ON "cache" (session_id); diff --git a/roundcubemail/program/include/rcube_imap.php b/roundcubemail/program/include/rcube_imap.php index f1483af9b..d8845cc74 100644 --- a/roundcubemail/program/include/rcube_imap.php +++ b/roundcubemail/program/include/rcube_imap.php @@ -2146,11 +2146,11 @@ class rcube_imap { $this->db->query( "UPDATE ".get_table_name('cache')." - SET created=".$this->db->now().", - data=? + SET created=".$this->db->now().", data=?, session_id=? WHERE user_id=? AND cache_key=?", $data, + session_id(), $_SESSION['user_id'], $key); } @@ -2159,11 +2159,12 @@ class rcube_imap { $this->db->query( "INSERT INTO ".get_table_name('cache')." - (created, user_id, cache_key, data) - VALUES (".$this->db->now().", ?, ?, ?)", + (created, user_id, cache_key, data, session_id) + VALUES (".$this->db->now().", ?, ?, ?, ?)", $_SESSION['user_id'], $key, - $data); + $data, + session_id()); } } |
