]> git.mjollnir.org Git - moodle.git/commitdiff
db sessions are now using the newer session handler adodb-session2.php
authorskodak <skodak>
Tue, 29 Aug 2006 22:45:54 +0000 (22:45 +0000)
committerskodak <skodak>
Tue, 29 Aug 2006 22:45:54 +0000 (22:45 +0000)
lib/db/install.xml
lib/db/mysql.php
lib/db/mysql.sql
lib/db/postgres7.php
lib/db/postgres7.sql
lib/setup.php
version.php

index 16090e2cabe29165728d5ff2fa0d16ccc07b141a..c331aaadf359b9c3b1334ec96e8fd0a9c4fcb8fd 100644 (file)
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<XMLDB PATH="lib/db" VERSION="20060821" COMMENT="XMLDB file for core Moodle tables">
+<XMLDB PATH="lib/db" VERSION="20060829" COMMENT="XMLDB file for core Moodle tables"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:noNamespaceSchemaLocation="../../lib/xmldb/xmldb.xsd"
+>
   <TABLES>
     <TABLE NAME="config" COMMENT="Moodle configuration variables" NEXT="config_plugins">
       <FIELDS>
         <INDEX NAME="name" UNIQUE="false" FIELDS="name"/>
       </INDEXES>
     </TABLE>
-    <TABLE NAME="scale" COMMENT="Defines grading scales" PREVIOUS="modules" NEXT="sessions">
+    <TABLE NAME="scale" COMMENT="Defines grading scales" PREVIOUS="modules" NEXT="sessions2">
       <FIELDS>
         <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" ENUM="false" NEXT="courseid"/>
         <FIELD NAME="courseid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="id" NEXT="userid"/>
         <INDEX NAME="courseid" UNIQUE="false" FIELDS="courseid"/>
       </INDEXES>
     </TABLE>
-    <TABLE NAME="sessions" COMMENT="Optional database session storage, not used by default" PREVIOUS="scale" NEXT="timezone">
+    <TABLE NAME="sessions2" COMMENT="Optional database session storage in new format, not used by default" PREVIOUS="scale" NEXT="timezone">
       <FIELDS>
-        <FIELD NAME="sesskey" TYPE="char" LENGTH="32" NOTNULL="true" SEQUENCE="false" ENUM="false" NEXT="expiry"/>
-        <FIELD NAME="expiry" TYPE="int" LENGTH="11" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" ENUM="false" PREVIOUS="sesskey" NEXT="expireref"/>
-        <FIELD NAME="expireref" TYPE="char" LENGTH="64" NOTNULL="false" SEQUENCE="false" ENUM="false" PREVIOUS="expiry" NEXT="data"/>
-        <FIELD NAME="data" TYPE="text" LENGTH="medium" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="expireref"/>
+        <FIELD NAME="sesskey" TYPE="char" LENGTH="64" NOTNULL="true" SEQUENCE="false" ENUM="false" NEXT="expiry"/>
+        <FIELD NAME="expiry" TYPE="datetime" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="sesskey" NEXT="expireref"/>
+        <FIELD NAME="expireref" TYPE="char" LENGTH="250" NOTNULL="false" DEFAULT="" SEQUENCE="false" ENUM="false" PREVIOUS="expiry" NEXT="created"/>
+        <FIELD NAME="created" TYPE="datetime" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="expireref" NEXT="modified"/>
+        <FIELD NAME="modified" TYPE="datetime" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="created" NEXT="sessdata"/>
+        <FIELD NAME="sessdata" TYPE="text" LENGTH="big" NOTNULL="false" DEFAULT="" SEQUENCE="false" ENUM="false" PREVIOUS="modified"/>
       </FIELDS>
       <KEYS>
         <KEY NAME="primary" TYPE="primary" FIELDS="sesskey" COMMENT="Primary key for sessions"/>
       </KEYS>
       <INDEXES>
-        <INDEX NAME="expiry" UNIQUE="false" FIELDS="expiry"/>
+        <INDEX NAME="sess2_expiry" UNIQUE="false" FIELDS="expiry" NEXT="sess2_expireref"/>
+        <INDEX NAME="sess2_expireref" UNIQUE="false" FIELDS="expireref" PREVIOUS="sess2_expiry"/>
       </INDEXES>
     </TABLE>
-    <TABLE NAME="timezone" COMMENT="Rules for calculating local wall clock time for users" PREVIOUS="sessions" NEXT="user">
+    <TABLE NAME="timezone" COMMENT="Rules for calculating local wall clock time for users" PREVIOUS="sessions2" NEXT="user">
       <FIELDS>
         <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" SEQUENCE="true" ENUM="false" NEXT="name"/>
         <FIELD NAME="name" TYPE="char" LENGTH="100" NOTNULL="true" SEQUENCE="false" ENUM="false" PREVIOUS="id" NEXT="year"/>
       </SENTENCES>
     </STATEMENT>
   </STATEMENTS>
-</XMLDB>
+</XMLDB>
\ No newline at end of file
index 57a60c2fd8f2e55043979be560fb5c7a42673523..3e5d0d95d58a3c6510fbf93fc2c8a50f03521a2b 100644 (file)
@@ -2141,6 +2141,25 @@ function main_upgrade($oldversion=0) {
     if ($oldversion < 2006082800) {
         table_column('user', '', 'ajax', 'integer', '1', 'unsigned', '1', '', 'htmleditor');
     }
+
+    if ($oldversion < 2006082900) {
+        execute_sql("DROP TABLE {$CFG->prefix}sessions", false);
+        execute_sql("
+            CREATE TABLE {$CFG->prefix}sessions2 (
+                sesskey VARCHAR(64) NOT NULL default '',
+                expiry DATETIME NOT NULL,
+                expireref VARCHAR(250),
+                created DATETIME NOT NULL,
+                modified DATETIME NOT NULL,
+                sessdata TEXT,
+                CONSTRAINT  PRIMARY KEY (sesskey)
+            ) COMMENT='Optional database session storage in new format, not used by default';", true);
+
+        execute_sql("
+            CREATE INDEX {$CFG->prefix}sess_exp_ix ON {$CFG->prefix}sessions2 (expiry);", true);
+        execute_sql("
+            CREATE INDEX {$CFG->prefix}sess_exp2_ix ON {$CFG->prefix}sessions2 (expireref);", true);
+    }
     
     return $result;
 }
index 993ceacaf78ca9aef6135ca2f1783c9bf3a5d7d6..765d1a55b4bc23e20296926e84e4402dd117bd95 100644 (file)
@@ -532,20 +532,22 @@ CREATE TABLE `prefix_scale` (
 
 
 #
-# Table structure for table `sessions`
-#
-
-CREATE TABLE `prefix_sessions` (
-  `sesskey` char(32) NOT null default '',
-  `expiry` int(11) unsigned NOT null default '0',
-  `expireref` varchar(64) default '',
-  `data` mediumtext NOT null default '',
-  PRIMARY KEY (`sesskey`), 
-  KEY (`expiry`) 
-) TYPE=MyISAM COMMENT='Optional database session storage, not used by default';
+# Table structure for table `sessions2`
+#
+CREATE TABLE prefix_sessions2 (
+    sesskey VARCHAR(64) NOT NULL default '',
+    expiry DATETIME NOT NULL,
+    expireref VARCHAR(250),
+    created DATETIME NOT NULL,
+    modified DATETIME NOT NULL,
+    sessdata TEXT,
+CONSTRAINT  PRIMARY KEY (sesskey)
+) COMMENT='Optional database session storage in new format, not used by default';
+
+CREATE INDEX prefix_sess_exp_ix ON prefix_sessions2 (expiry);
+CREATE INDEX prefix_sess_exp2_ix ON prefix_sessions2 (expireref);
 # --------------------------------------------------------
 
-
 #
 # Table structure for table `timezone`
 #
index b114d6b959d8e685362c9229c068c1e810c729e3..f3e19bc35d236c061c0940815185b3476ef68bbc 100644 (file)
@@ -1741,6 +1741,25 @@ function main_upgrade($oldversion=0) {
         table_column('user', '', 'ajax', 'integer', '1', 'unsigned', '1', '', 'htmleditor');
     }
 
+    if ($oldversion < 2006082900) {
+        execute_sql("DROP TABLE {$CFG->prefix}sessions", false);
+        execute_sql("
+            CREATE TABLE {$CFG->prefix}sessions2 (
+                sesskey VARCHAR(255) NOT NULL default '',
+                expiry TIMESTAMP NOT NULL,
+                expireref VARCHAR(255),
+                created TIMESTAMP NOT NULL,
+                modified TIMESTAMP NOT NULL,
+                sessdata TEXT,
+                CONSTRAINT {$CFG->prefix}sess_ses_pk PRIMARY KEY (sesskey)
+            );", true);
+
+        execute_sql("
+            CREATE INDEX {$CFG->prefix}sess_exp_ix ON {$CFG->prefix}sessions2 (expiry);", true);
+        execute_sql("
+            CREATE INDEX {$CFG->prefix}sess_exp2_ix ON {$CFG->prefix}sessions2 (expireref);", true);
+    }
+
     return $result;
 }
 
index 70455595f0c205e793c0ff5954444623aa152d14..0a4a345c66a710c5e1d70ceb1c730a7783e544a0 100644 (file)
@@ -338,14 +338,19 @@ CREATE TABLE prefix_scale (
    timemodified integer NOT NULL default '0'
 );
 
-CREATE TABLE prefix_sessions (
-  sesskey char(32) PRIMARY KEY,
-  expiry integer NOT null,
-  expireref varchar(64),
-  data text NOT null
+CREATE TABLE prefix_sessions2 (
+    sesskey VARCHAR(255) NOT NULL default '',
+    expiry TIMESTAMP NOT NULL,
+    expireref VARCHAR(255),
+    created TIMESTAMP NOT NULL,
+    modified TIMESTAMP NOT NULL,
+    sessdata TEXT,
+CONSTRAINT prefix_sess_ses_pk PRIMARY KEY (sesskey)
 );
 
-CREATE INDEX prefix_sessions_expiry_idx ON prefix_sessions (expiry);
+CREATE INDEX prefix_sess_exp_ix ON prefix_sessions2 (expiry);
+
+CREATE INDEX prefix_sess_exp2_ix ON prefix_sessions2 (expireref);
 
 CREATE TABLE prefix_timezone (
   id SERIAL PRIMARY KEY,
index e150e9309be82da49f14051197164dfac5f67a71..8a67c08f54438cc1d21eb2935fc35400d728d0ca 100644 (file)
@@ -314,9 +314,12 @@ $CFG->os = PHP_OS;
             $ADODB_SESSION_USER    = $CFG->dbuser;
             $ADODB_SESSION_PWD     = $CFG->dbpass;
             $ADODB_SESSION_DB      = $CFG->dbname;
-            $ADODB_SESSION_TBL     = $CFG->prefix.'sessions';
+            $ADODB_SESSION_TBL     = $CFG->prefix.'sessions2';
+            if (!empty($CFG->sessiontimeout)) {
+                $ADODB_SESS_LIFE   = $CFG->sessiontimeout;
+            }
 
-            require_once($CFG->libdir. '/adodb/session/adodb-session.php');
+            require_once($CFG->libdir. '/adodb/session/adodb-session2.php');
         }
     }
 /// Set sessioncookie variable if it isn't already
index f25a014ef39797b2d4ee9a96612e300a414b08d6..ae85a13c9ba06bfd11e246aaaacfa667f3acfde7 100644 (file)
@@ -6,7 +6,7 @@
 // This is compared against the values stored in the database to determine
 // whether upgrades should be performed (see lib/db/*.php)
 
-   $version = 2006082800;  // YYYYMMDD = date
+   $version = 2006082900;  // YYYYMMDD = date
                            //       XY = increments within a single day
 
    $release = '1.7 dev';    // Human-friendly version name