- Fix 'cache' table cleanup on session destroy (#1485516)

release-0.6
alecpl 16 years ago
parent bd0c2b0a34
commit be7d3b6918

@ -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)

@ -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;

@ -76,6 +76,10 @@ CREATE TABLE `cache` (
INDEX `user_cache_index` (`user_id`,`cache_key`),
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;

@ -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"

@ -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);

@ -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());
}
}

Loading…
Cancel
Save