* (bug 31204) Remove old user.user_options
authorSam Reed <reedy@users.mediawiki.org>
Wed, 28 Sep 2011 18:08:48 +0000 (18:08 +0000)
committerSam Reed <reedy@users.mediawiki.org>
Wed, 28 Sep 2011 18:08:48 +0000 (18:08 +0000)
Added run of ConvertUserOptions maintenance script into update.php before dropping the column

Removed usages of user_options in code

Marked User::decodeOptions() deprecated as of 1.19.

Made ConvertUserOptions drop out early if the user_options field doesn't exist

Made ConvertUserOptions update user_options to '' after migration of user options to mOptions

includes/User.php
includes/installer/DatabaseUpdater.php
includes/installer/MysqlUpdater.php
includes/installer/SqliteUpdater.php
maintenance/archives/patch-drop-user_options.sql [new file with mode: 0644]
maintenance/convertUserOptions.php
maintenance/tables.sql
tests/selenium/data/SimpleSeleniumTestDB.sql
tests/selenium/data/mediawiki118_fresh_installation.sql

index 4cf9482..b961285 100644 (file)
@@ -1089,8 +1089,10 @@ class User {
                        $this->mNewpassword = $row->user_newpassword;
                        $this->mNewpassTime = wfTimestampOrNull( TS_MW, $row->user_newpass_time );
                        $this->mEmail = $row->user_email;
-                       $this->decodeOptions( $row->user_options );
-                       $this->mTouched = wfTimestamp(TS_MW,$row->user_touched);
+                       if ( isset( $row->user_options ) ) {
+                               $this->decodeOptions( $row->user_options );
+                       }
+                       $this->mTouched = wfTimestamp( TS_MW, $row->user_touched );
                        $this->mToken = $row->user_token;
                        $this->mEmailAuthenticated = wfTimestampOrNull( TS_MW, $row->user_email_authenticated );
                        $this->mEmailToken = $row->user_email_token;
@@ -2693,8 +2695,10 @@ class User {
        /**
         * Set this user's options from an encoded string
         * @param $str String Encoded options to import
+        *
+        * @deprecated in 1.19 due to removal of user_options from the user table
         */
-       public function decodeOptions( $str ) {
+       private function decodeOptions( $str ) {
                if( !$str )
                        return;
 
@@ -2822,7 +2826,6 @@ class User {
                                'user_real_name' => $this->mRealName,
                                'user_email' => $this->mEmail,
                                'user_email_authenticated' => $dbw->timestampOrNull( $this->mEmailAuthenticated ),
-                               'user_options' => '',
                                'user_touched' => $dbw->timestamp( $this->mTouched ),
                                'user_token' => $this->mToken,
                                'user_email_token' => $this->mEmailToken,
@@ -2890,7 +2893,6 @@ class User {
                        'user_email' => $user->mEmail,
                        'user_email_authenticated' => $dbw->timestampOrNull( $user->mEmailAuthenticated ),
                        'user_real_name' => $user->mRealName,
-                       'user_options' => '',
                        'user_token' => $user->mToken,
                        'user_registration' => $dbw->timestamp( $user->mRegistration ),
                        'user_editcount' => 0,
@@ -2924,7 +2926,6 @@ class User {
                                'user_email' => $this->mEmail,
                                'user_email_authenticated' => $dbw->timestampOrNull( $this->mEmailAuthenticated ),
                                'user_real_name' => $this->mRealName,
-                               'user_options' => '',
                                'user_token' => $this->mToken,
                                'user_registration' => $dbw->timestamp( $this->mRegistration ),
                                'user_editcount' => 0,
index b20054d..4f427ba 100644 (file)
@@ -566,4 +566,11 @@ abstract class DatabaseUpdater {
                $task = $this->maintenance->runChild( 'UpdateCollation' );
                $task->execute();
        }
+
+       protected function doMigrateUserOptions() {
+               $cl = $this->maintenance->runChild( 'ConvertUserOptions' );
+               $this->output( "Migrating remaining user_options... " );
+               $cl->execute();
+               $this->output( "done.\n" );
+       }
 }
index 14510e3..80d9a00 100644 (file)
@@ -188,6 +188,9 @@ class MysqlUpdater extends DatabaseUpdater {
                        array( 'addTable', 'globaltemplatelinks', 'patch-globaltemplatelinks.sql' ),
                        array( 'addTable', 'globalnamespaces', 'patch-globalnamespaces.sql' ),
                        array( 'addTable', 'globalinterwiki', 'patch-globalinterwiki.sql' ),
+                       array( 'doMigrateUserOptions' ),
+                       array( 'dropField', 'user',         'user_options', 'patch-drop-user_options.sql' ),
+
                );
        }
 
index 46fada1..a5fba27 100644 (file)
@@ -66,6 +66,8 @@ class SqliteUpdater extends DatabaseUpdater {
                        array( 'addTable', 'globaltemplatelinks', 'patch-globaltemplatelinks.sql' ),
                        array( 'addTable', 'globalnamespaces', 'patch-globalnamespaces.sql' ),
                        array( 'addTable', 'globalinterwiki', 'patch-globalinterwiki.sql' ),
+                       array( 'doMigrateUserOptions' ),
+                       array( 'dropField', 'user',         'user_options', 'patch-drop-user_options.sql' ),
                );
        }
 
diff --git a/maintenance/archives/patch-drop-user_options.sql b/maintenance/archives/patch-drop-user_options.sql
new file mode 100644 (file)
index 0000000..15b7d27
--- /dev/null
@@ -0,0 +1 @@
+ALTER TABLE /*_*/user DROP COLUMN user_options;
\ No newline at end of file
index f46f710..c99566d 100644 (file)
@@ -37,23 +37,34 @@ class ConvertUserOptions extends Maintenance {
                $id = 0;
                $dbw = wfGetDB( DB_MASTER );
 
+               if ( !$dbw->fieldExists( 'user', 'user_options ' ) ) {
+                       $this->output( "No user_options field in the user table. Nothing to migrate" );
+                       return;
+               }
                while ( $id !== null ) {
-                       $idCond = 'user_id>' . $dbw->addQuotes( $id );
-                       $optCond = "user_options!=" . $dbw->addQuotes( '' ); // For compatibility
+                       $idCond = 'user_id > ' . $dbw->addQuotes( $id );
+                       $optCond = "user_options != " . $dbw->addQuotes( '' ); // For compatibility
                        $res = $dbw->select( 'user', '*',
-                                       array( $optCond, $idCond ), __METHOD__,
-                                       array( 'LIMIT' => 50, 'FOR UPDATE' ) );
+                               array( $optCond, $idCond ), __METHOD__,
+                               array( 'LIMIT' => 50, 'FOR UPDATE' )
+                       );
                        $id = $this->convertOptionBatch( $res, $dbw );
                        $dbw->commit();
 
                        wfWaitForSlaves();
 
-                       if ( $id )
+                       if ( $id ) {
                                $this->output( "--Converted to ID $id\n" );
+                       }
                }
                $this->output( "Conversion done. Converted " . $this->mConversionCount . " user records.\n" );
        }
 
+       /**
+        * @param $res
+        * @param $dbw DatabaseBase
+        * @return null|int
+        */
        function convertOptionBatch( $res, $dbw ) {
                $id = null;
                foreach ( $res as $row ) {
@@ -62,6 +73,14 @@ class ConvertUserOptions extends Maintenance {
                        $u = User::newFromRow( $row );
 
                        $u->saveSettings();
+
+                       // Do this here as saveSettings() doesn't set user_options to '' anymore!
+                       $dbw->update(
+                               'user',
+                               array( 'user_options' => '' ),
+                               array( 'user_id' => $row->user_id ),
+                               __METHOD__
+                       );
                        $id = $row->user_id;
                }
 
index 556fd54..bacf6ce 100644 (file)
@@ -86,12 +86,6 @@ CREATE TABLE /*_*/user (
   -- Same with passwords.
   user_email tinytext NOT NULL,
 
-  -- Newline-separated list of name=value defining the user
-  -- preferences
-  -- Now obsolete in favour of user_properties table;
-  -- old values will be migrated from here transparently.
-  user_options blob NOT NULL,
-
   -- This is a timestamp which is updated when a user
   -- logs in, logs out, changes preferences, or performs
   -- some other action requiring HTML cache invalidation
@@ -1493,7 +1487,7 @@ CREATE TABLE /*_*/globaltemplatelinks (
 
   -- The namespace of the calling page on the remote wiki
   -- Needed for display purposes, since the foreign namespace ID doesn't necessarily match a local one
-  -- The link between the namespace and the namespace name is made by the globalnamespaces table 
+  -- The link between the namespace and the namespace name is made by the globalnamespaces table
   gtl_from_namespace int NOT NULL,
 
   -- The title of the calling page on the remote wiki
index 7944c45..1a3196c 100644 (file)
@@ -1295,7 +1295,6 @@ CREATE TABLE `mw_user` (
   `user_newpassword` tinyblob NOT NULL,
   `user_newpass_time` binary(14) DEFAULT NULL,
   `user_email` tinytext NOT NULL,
-  `user_options` blob NOT NULL,
   `user_touched` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
   `user_token` binary(32) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
   `user_email_authenticated` binary(14) DEFAULT NULL,
index 89bc319..2724bad 100644 (file)
@@ -767,13 +767,13 @@ CREATE TABLE `mw_objectcache` (
 
 LOCK TABLES `mw_objectcache` WRITE;
 /*!40000 ALTER TABLE `mw_objectcache` DISABLE KEYS */;
-INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:messages:en','K´2´ª.¶2·R\ns\r\nöô÷S²Î´2´®\ 5\0','2010-12-31 13:16:31');
-INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:pcache:idhash:1-0!*!*!!en!*','¥V[oâF\14Þg~ÅÄ\ f­´\12Ø\ 6B\9aÁP­¢m\12)$TK»\ fU\85\ 6û\0£\8cÇÖÌ8$\eí\7fï9\83a\rI«l\97 X>×ïܹãq\97\aSa,\98»Ê\95\95\v\8c?[~Ê\83|\ 6\8f.\18Z\1eÇç\ 3\1e$å8Y\8c\'\90IñYÞK¶\16\96-\04³U\9a\82µËJ©\'&µuB)È:I¸\18·\92\10µÊñE¡m¥\1csk`\89`k\ 3ËQ°v®äa\98\83\13\9d\rZÌÉt§0«\90ÞÂ+P%GE\aÚÙ\80¥JX;\n\10\12\18-\14s\ 4\8e\19P£@\17ËB©b\13\8cÿÀ8~¶ì²\92\19\18³ea\10\12þÏ\85\93\85fø­¬Ô+\8f\84Ü0[,ÝF\18èx¬­dÝ\1d\'¶\14zï0\93ÎBJÚÁø¯=ø°Äø¡\17J\9dÁc§\\\97¿:é\14\8c&BêùT¬à\'\91\97CáõFdÿ×\86FqÀ¶âÁGd±\9aÌÙ%8Gè0\87ÆA\16\8cI\93\ 2ù;           Ô\98\1d`Ë7í5\88LI\r\ 1\93Ù(¨õç{ýc\8b¬¶\93\84\18g+©Ô8Qrü¢&\9bͦãËA)úV\92\89Ð\95PT\94¥\\UƧtn·\1eÞZ¢\ 3e¶SfJZ\1f(V\ 1\ 1ý\ fP¿}øý\8d\b¾µ0êü\97O\8bN      \97=jÏ\\H\95\víyÔ\\á\1eU[h]T:\85ï\86\82\fÀ\86bd\9bêu\94\8f\10+Õj%\'í6kÝÂf:E\81\1c;Ç@Y\18×\9aâÓ\144\85ØïºÈ\80¥\bÃqÖ\vãÈ\7fZÓº6<bñ3\9c\88TU(då\17à,\n»ÑùY|Úe\8b\'\a¶5\83¼TÂ\ 1\13fUå8}ÿ\"÷ñ±\ 4\ 3°Ò/\10¶ÄÈ}Ukç\119oµÛ;ä\9fÄ\ 3\90ó\9d|*R?\85nÍîá 3dÝÜg1ßÌyé¹\\f8gk\1e·£\93÷øw\ 2úä=£\18\1c\16\ 4\9b:/Y7\8a£¸Û\8bâ^<èÅ\8cüù­ÕÇ\15v#ôªÂi¼\91úÞ\ 6CÁ#þü\956\Zò.0ÆUa$4\19\11í=\ZÍÝò;ç\ 1Í4£\99¦÷\ 1Y=²æ\95ê¬5éÝ\ 6ý:kpÎ\90q\9d£Å¦4áýX·ËÞC\9f\96q\1fYßµ-\87\92Ç\88õô\9cÿÐD×fúÑ\eÍÐ\fÖ:\83\1eÿá\19ò¦(3t\8c®14Cü×J\89#ñ©ÞÑÃ\ 5\8f\86µÎ\15\9e\81WXT®Ûâ\92Î\94y: ^á6½v\907ìÿ\82äI\91UêEe·\aóª(\9ap0ãùgaô6\7fMj\8dÂScþ,Ñ«@ëÏÞ\85+R\ 5\ f ö\95ãAý\8eÎxÐ¥\'6\81ßôutÇ·bÛ\9bºÊ\17`jµ8Ø\9aòGªIC<KSäþ\ 65\9a|¾krJ\ 6\ry±\\b3xP\83³­\ 3¡Óua\8e\ fÎðë®$SS\94`ÜÁtQ.gw\17W³É\r\19@\'ôè¢ÕwÍß ï°Ø\bxZ(\99>5\ 4\vÁ\ fþ§\adwå>·=J)\rÓ6\15t ·ÅXøÌ\12¸æM¯É\b­B»\n÷Å\96TÃý\13\8cõb>\91qgÐéï\12\84\v\ 4\f\9bz·n\ e7\91§vwr¸-%uÛ-QiþiX1çöNe\13±\92éA#ÎvÛí\15Ó§ý3Ìó?','2010-12-31 13:16:31');
-INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:pcache:idoptions:1','E\8fÁ\ e\82@\fDÿ¥\1f\v\"v\8fÆ£á¢ÞWh°\89,\86b¢!ü»»\18â­\997íL+Ú\13\1c|}ç³t\f´¥I©$è®<¨ô\ 1\9cF\rpSlò4£\89ìïOJN`\r\Z´\99Á\f\8b\f\17Õ®¾ãû)Ã\a\9cPYäÆ$¶K¬\ f£\97 Õ£9ùVjp72ëâE¹©\9ecÌWp\9e2\9aä\acVxu7\1eîì\e     ­¦»\98\b\12p#£r=.µ\85¬[>y)\ f\ f\1fZpóü\ 5','2010-12-31 13:16:31');
-INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:resourceloader:filter:minify-css:3832ee25d9c44988461f5f339b9b6a48','+¶26²RrÈMMÉLTHÌÉ©V\0\82Z(¿ (3¯\ 4(R«d\r\0','2038-01-19 03:14:07');
-INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:resourceloader:filter:minify-css:aa0df16258ad99a1d249e796b5067ed9','+¶2±°RrÈMMÉLTHÌÉ©NÔËK-×Q.,ÍLÎNJ,R\0ó«\93ósò\8b¬\94\93\12\r\80 ¶VÉ\Z\0','2038-01-19 03:14:07');
-INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:resourceloader:filter:minify-js:22814eeadc9cf0a9ebcd844e14198e66','m\94ÉrÛ0\f\86ïy\f\9eÚ\19\8fÇrê&QÞ¡×\9e!\n\92\18qQ¹Xq;}÷\82¤$ËÃÞ\88\8f øc!]]].o5SØ\nø)Fq\f\ eíÑL^\18í\8e\ eý\97?\8cs\85\ 2!\1d«O\aÆM\\¼¦\95öøéù\0\96ÈåN¤Ð\18É\81µà\91Õ¬Å\ e\82ô\8c\80è:£å-\85j\85\83F¦Ø{Û\85¾Gç\13\"i\9e\ eø\87 \11\ZÝ6\92KÁÇÍÏ!\8fÊY]=ØF[Ñ\ f~ç«\8d\17\9d\12ÚØä¶\83\16¯\b\12ÚÖî`¬\8a\a9NÐÇ´ª\95Ï@¹Káü²\11\ f|zÔí¶±1«AÆÔ\1f@J#_Ô\81æ7\'úl\18Ë1)\vJ\81͵ê).\923\vzÔfÖT\86\98²H\ eÑ\9aÀ[#)ðBzRA©7Ö\8c\98ë\"TÔ*~SWÎ\aö\11\1cå\91/Pà\87ä\92B®Å\8e;\Zç\94ay\836\1cø\80ëÚè+U\8aº?.$º6ÀÇ-u\1dT\83v@h\85îsÉ&ª¹ÀÙèNØ¥b\eòfJ\92~\ 5ê]\ 36\19\96·p£³/q)\85\12>\ f\9fE\85\ 4ÎÍ\94A\neÍL®g\ZE\87`cW\92ÿ\99¶Ü`fJ©EÍa\19\82\88>\82\9ab\n¹Ó\91dÑ.u\95doÜ\e¾[\e¹\nt£ b³+\8d\1fõ\86l\1f\Z?X* \91Y\95\1f(äÖ\85\10;\eßL¶\1cJqÅ¥\ 6É\9d\10õÀòd$\19Ü\"¤WzGû\8e-@b~\ f+\89#\99\9eÙ\8eÅÆ\82~\88¶âÆøÿP)B ï£ø\80ã¬\16ðq\8cÒ\962×å\11ÍríRlë\15¬\80ô\ 1`\1cz  º\ f4\8d«\9dÛúÃ\9dXímÀ;¨XÝ\81t;r.ÈsA¾\15äR\90ï\ 5y)ÈkAÞ\nR\9dJTª®JÙU©»*\85W«ò¿_ß\9f\9eî\9f¼4@óvt\9eþfúà÷\7f>\15\95\ 6«½±x\84½ÿ\ 3','2038-01-19 03:14:07');
-INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:resourceloader:filter:minify-js:dd9440c19c575629ac5ec90e489cf62e','+¶21·Râ\ 2\81ÜÔ\94ÌÄðÌìL½\9cüÄ\94Ô\"½â\92Ä\92T\8dj¥âÌ\92T%+¥¢ÔÄ\94ZMk.%k\0','2038-01-19 03:14:07');
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:messages:en','K�2��.�2�R\ns\r\n���S�δ2��\ 5\0','2010-12-31 13:16:31');
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:pcache:idhash:1-0!*!*!!en!*','�V[o�F\14�g~��\ f��\12\ 6B��P��m\12)$TK�\ fU�\ 6�\0�����8$\e\7f�9�a\rI�l��X>��ܹ�q�\aSa,��ʕ�\vx��?[~ʃ|\ 6�.\18Z\1e��\ 3\1e$�8Y�\'�I�Y�K�\16�-\04�U����J�\'&�uB)�:I�\18��\10���E�m�\1csk`�`k\ 3�Q�v��a��\13�\rZ��t�0����+P%GE\a�ـ�JX;\n\10\12\18-\14s\ 4\19P�@\17�B�b\13���8~�첒\19$�\18�ea\10\12�υ��f��+���0[,�F\18�x��d�\1d\'�\14z�0��BJ���=���\17J��c�\\��:�\14�&B��T��\'��C��Fdÿ׆Fq����Gd����%8G�0��A\16�I�\ 2�;                Ԙ\1d`�7�5�LI\r\ 1��(���{�c�����\18g+��8Qr�&�ͦ��A)�V��ЕPT��\\UƧtn�\1e�Z�\ 3e�SfJZ\1f(V\ 1\ 1\ fP�}��\b��0��O�N     �=j�\\H�\v�y�\\�\1eU[h]T:�\f��bd��u��\10+�j%\'�6k��f:E�\1c;�@Y\18ך��\144���Ȁ�\b�q�\v��\7fZ�º6<b�3��TU(d�\17�,\n���Y|�e�\'\a�5��T�\ 1\13fU�8}�\"��\ 4m�\ 3��/\10���}Uk�\119o��;��\ 3��|*R?�n���   3d��g1��y�\\f8gk\1e�����w\ 2��=�\18\1c\16\ 4�:/Y7���ۋ�^<�Ō����\15v#���i����\ 6C�#��6\Z�.0�Ua$4\19\11�=\Z���;�\ 1�4����\ 1Y=���5��\ 6�:kpΐq��Ŧ4��X���C��q\1fYߵ-��Lj�����D�f��\e��\f�:�\1e��\19�(3t��14C��J�#����\ 5����\15��WXT���Δy:�^�6�v�7����I�U�Ee�\a�(�p0��ga�6\7fMj��Sc�,ѫ@��ޅ+R\ 5\ f����A��xХ\'6���utǷbۛ��\17`j�8ؚ�G�IC<KS��\ 65�|�krJ\ 6\ry�\\b3xP���\ 3��ua�@�\ f���$SS�`��tQ.gw\17W��\r\19@\'���w�� ��\bxZ(�>5\ 4{�\v\ f��\adw�>�=J)\r�6\15t ��X��\12��M��\b�B�\n�ŖT��\13��b>�qg���\12\v\ 47�\f�z�n\ e7��vwr�-%u�-Qi�iX1��Ne\13���A#�v��\15ӧ�3��?','2010-12-31 13:16:31');
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:pcache:idoptions:1','E��\ e�@\fD��\1f`�\v\"v�ƣ��Wh��,�b�!�\18⭙7�L+�\13\1c|}�t\f��I�$�<��\ 1�F\rpSl�4����OJN`\r\Z���\f\f\17ծ���)�\a�PY��$�K�\ f���գ9�Vjp72��E���c�Wp�2��\acVxu7\1e��\e        ����\b\12p#�r=.���[>y)\ f\ f\1fZp��\ 5','2010-12-31 13:16:31');
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:resourceloader:filter:minify-css:3832ee25d9c44988461f5f339b9b6a48','+�26�Rr�MM�LTH�ɩV\0�Z(��(3�\ 4(R�d\r\0','2038-01-19 03:14:07');
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:resourceloader:filter:minify-css:aa0df16258ad99a1d249e796b5067ed9','+�2��Rr�MM�LTH�ɩN��K-�Q.,�L�NJ,R\0��s򋬔�\12\r���V�\Z\0','2038-01-19 03:14:07');
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:resourceloader:filter:minify-js:22814eeadc9cf0a9ebcd844e14198e66','m��r�0\f��y\f��\19��r�&Qޡמ!\n�\18qQ�Xq;}���$��ވ� �c!]]].o5S�\n�)Fq\f\ e��L^\18\ e�?�s�F�\ 2!\1d�O\a�M\\�������\0���N��\18Ɂ���լ�\ e���:��-�j��F��{ۅ�G�\13\"i�\ e� \11\Z�6�K����!��Y]=�F[�\ f~竍\17\12��䶃\16\b\12���`��\a9N�Ǵ���@�K��\11\ f|z�?1�A��\1f@J#_ԁ�7\'�l\18�1)\vJ�͵�).�3\vz�f�T�A���H\ eњ�[#)�BzRA�7֌��\"T�*~SW�\a\11\1c�/P���B�Ŏ;\Z�ay�6\1c����+U��?.$�6��-u\1dT�v@h��s�&�����Nإb\e�fJ�~\ 5�]\ 36\19��p��/q)�\12>\ f�E�1�\ 4�͔A\ne�L�g\ZE�`cW�����`fJ�E�a\19��>��b\n�ӑd�.u�do�\e�[\e�\nt��b�+�\1f��l\1f\Z?X*��Y�\1f(�օ\10;\e�L�\1cJqť\ 6ɝ\10���d$\19�\"�WzG�-@b~\ f+�#�kǞَ�Ƃ~������P)B  ���\16�q�Җ2��\11�r�Rl�\15���\ 1`\1cz   �\ f4�����ÝX�m�;�X݁t;r.�sA�\15�R��\ 5y)�kA�\nR�JT��J�U��*�W��_ߟ�4@�vt��f���\7f>\15\ 6���x���\ 3','2038-01-19 03:14:07');
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:resourceloader:filter:minify-js:dd9440c19c575629ac5ec90e489cf62e','+�21�R�\ 2��Ԕ�����L���Ĕ�\"��ĒT�j��̒T%+���ĔJ�ZMk.%k\0','2038-01-19 03:14:07');
 /*!40000 ALTER TABLE `mw_objectcache` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1384,7 +1384,6 @@ CREATE TABLE `mw_user` (
   `user_newpassword` tinyblob NOT NULL,
   `user_newpass_time` binary(14) DEFAULT NULL,
   `user_email` tinytext NOT NULL,
-  `user_options` blob NOT NULL,
   `user_touched` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
   `user_token` binary(32) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
   `user_email_authenticated` binary(14) DEFAULT NULL,