alecpl
2008-11-21 be7d3b6918ff90757d10804ac914edb5a65f4828
- Fix 'cache' table cleanup on session destroy (#1485516)


6 files modified
36 ■■■■ changed files
CHANGELOG 4 ●●●● patch | view | raw | blame | history
SQL/mysql.update.sql 8 ●●●●● patch | view | raw | blame | history
SQL/mysql5.initial.sql 4 ●●●● patch | view | raw | blame | history
SQL/postgres.initial.sql 3 ●●●● patch | view | raw | blame | history
SQL/postgres.update.sql 6 ●●●●● patch | view | raw | blame | history
program/include/rcube_imap.php 11 ●●●● patch | view | raw | blame | history
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)
SQL/mysql.update.sql
@@ -30,3 +30,11 @@
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;
SQL/mysql5.initial.sql
@@ -77,6 +77,10 @@
 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;
SQL/postgres.initial.sql
@@ -128,13 +128,14 @@
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"
SQL/postgres.update.sql
@@ -21,3 +21,9 @@
-- 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);
program/include/rcube_imap.php
@@ -2146,11 +2146,11 @@
      {
      $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 @@
      {
      $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());
      }
    }