http://www.mediawiki.org/wiki/Special:Code/MediaWiki/89250

Revision: 89250
Author:   freakolowsky
Date:     2011-06-01 08:27:51 +0000 (Wed, 01 Jun 2011)
Log Message:
-----------
* upgrade patches for oracle 1.17->1.19
* fixed tableExists to handle possible username-dbname difference
* added indexExists for updater
* fixed a bug in DatabaseUpdater
* tried not to produce bugs (may have failed)

Modified Paths:
--------------
    trunk/phase3/includes/db/DatabaseOracle.php
    trunk/phase3/includes/installer/DatabaseUpdater.php
    trunk/phase3/includes/installer/OracleUpdater.php
    trunk/phase3/maintenance/oracle/tables.sql

Added Paths:
-----------
    trunk/phase3/maintenance/oracle/archives/patch-config.sql
    trunk/phase3/maintenance/oracle/archives/patch-up_property.sql
    trunk/phase3/maintenance/oracle/archives/patch-user_email_index.sql

Modified: trunk/phase3/includes/db/DatabaseOracle.php
===================================================================
--- trunk/phase3/includes/db/DatabaseOracle.php 2011-06-01 02:05:18 UTC (rev 
89249)
+++ trunk/phase3/includes/db/DatabaseOracle.php 2011-06-01 08:27:51 UTC (rev 
89250)
@@ -894,11 +894,32 @@
        }
 
        /**
+        * Query whether a given index exists
+        */
+       function indexExists( $table, $index, $fname = 
'DatabaseOracle::indexExists' ) {
+               $table = $this->tableName( $table );
+               $table = strtoupper( $this->removeIdentifierQuotes( $table ) );
+               $index = strtoupper( $index );
+               $owner = strtoupper( $this->mDBname );
+               $SQL = "SELECT 1 FROM all_indexes WHERE owner='$owner' AND 
index_name='{$table}_{$index}'";
+               $res = $this->doQuery( $SQL );
+               if ( $res ) {
+                       $count = $res->numRows();
+                       $res->free();
+               } else {
+                       $count = 0;
+               }
+               return $count != 0;
+       }
+
+       /**
         * Query whether a given table exists (in the given schema, or the 
default mw one if not given)
         */
        function tableExists( $table ) {
-               $table = $this->removeIdentifierQuotes($table);
-               $SQL = "SELECT 1 FROM user_tables WHERE table_name='$table'";
+               $table = $this->tableName( $table );
+               $table = strtoupper( $this->removeIdentifierQuotes( $table ) );
+               $owner = strtoupper( $this->mDBname );
+               $SQL = "SELECT 1 FROM all_tables WHERE owner='$owner' AND 
table_name='$table'";
                $res = $this->doQuery( $SQL );
                if ( $res ) {
                        $count = $res->numRows();
@@ -906,7 +927,7 @@
                } else {
                        $count = 0;
                }
-               return $count;
+               return $count != 0;
        }
 
        /**

Modified: trunk/phase3/includes/installer/DatabaseUpdater.php
===================================================================
--- trunk/phase3/includes/installer/DatabaseUpdater.php 2011-06-01 02:05:18 UTC 
(rev 89249)
+++ trunk/phase3/includes/installer/DatabaseUpdater.php 2011-06-01 08:27:51 UTC 
(rev 89250)
@@ -65,7 +65,7 @@
                } else {
                        $this->maintenance = new FakeMaintenance;
                }
-               $maintenance->setDB( $db );
+               $this->maintenance->setDB( $db );
                $this->initOldGlobals();
                wfRunHooks( 'LoadExtensionSchemaUpdates', array( $this ) );
        }

Modified: trunk/phase3/includes/installer/OracleUpdater.php
===================================================================
--- trunk/phase3/includes/installer/OracleUpdater.php   2011-06-01 02:05:18 UTC 
(rev 89249)
+++ trunk/phase3/includes/installer/OracleUpdater.php   2011-06-01 08:27:51 UTC 
(rev 89250)
@@ -23,12 +23,20 @@
 
        protected function getCoreUpdateList() {
                return array(
-                       // 1.16
+                       // 1.17
                        array( 'doNamespaceDefaults' ),
                        array( 'doFKRenameDeferr' ),
                        array( 'doFunctions17' ),
                        array( 'doSchemaUpgrade17' ),
                        array( 'doInsertPage0' ),
+                       
+                       //1.18
+                       array( 'addIndex',      'user',          'i02',       
'patch-user_email_index.sql' ),
+                       array( 'modifyField', 'user_properties', 'up_property', 
'patch-up_property.sql' ),
+
+                       // 1.19
+                       array( 'addTable', 'config', 'patch-config.sql' ),
+                       
                );
        }
 

Added: trunk/phase3/maintenance/oracle/archives/patch-config.sql
===================================================================
--- trunk/phase3/maintenance/oracle/archives/patch-config.sql                   
        (rev 0)
+++ trunk/phase3/maintenance/oracle/archives/patch-config.sql   2011-06-01 
08:27:51 UTC (rev 89250)
@@ -0,0 +1,8 @@
+define mw_prefix='{$wgDBprefix}';
+
+CREATE TABLE &mw_prefix.config (
+  cf_name VARCHAR2(255) NOT NULL,
+  cf_value blob NOT NULL
+);
+ALTER TABLE &mw_prefix.config ADD CONSTRAINT &mw_prefix.config_pk PRIMARY KEY 
(cf_name);
+


Property changes on: trunk/phase3/maintenance/oracle/archives/patch-config.sql
___________________________________________________________________
Added: svn:eol-style
   + native

Added: trunk/phase3/maintenance/oracle/archives/patch-up_property.sql
===================================================================
--- trunk/phase3/maintenance/oracle/archives/patch-up_property.sql              
                (rev 0)
+++ trunk/phase3/maintenance/oracle/archives/patch-up_property.sql      
2011-06-01 08:27:51 UTC (rev 89250)
@@ -0,0 +1,3 @@
+define mw_prefix='{$wgDBprefix}';
+
+ALTER TABLE &mw_prefix.user_properties MODIFY up_property varchar2(255);


Property changes on: 
trunk/phase3/maintenance/oracle/archives/patch-up_property.sql
___________________________________________________________________
Added: svn:eol-style
   + native

Added: trunk/phase3/maintenance/oracle/archives/patch-user_email_index.sql
===================================================================
--- trunk/phase3/maintenance/oracle/archives/patch-user_email_index.sql         
                (rev 0)
+++ trunk/phase3/maintenance/oracle/archives/patch-user_email_index.sql 
2011-06-01 08:27:51 UTC (rev 89250)
@@ -0,0 +1,4 @@
+define mw_prefix='{$wgDBprefix}';
+
+CREATE INDEX &mw_prefix.mwuser_i02 ON &mw_prefix.mwuser (user_email, 
user_name);
+


Property changes on: 
trunk/phase3/maintenance/oracle/archives/patch-user_email_index.sql
___________________________________________________________________
Added: svn:eol-style
   + native

Modified: trunk/phase3/maintenance/oracle/tables.sql
===================================================================
--- trunk/phase3/maintenance/oracle/tables.sql  2011-06-01 02:05:18 UTC (rev 
89249)
+++ trunk/phase3/maintenance/oracle/tables.sql  2011-06-01 08:27:51 UTC (rev 
89250)
@@ -23,6 +23,7 @@
 ALTER TABLE &mw_prefix.mwuser ADD CONSTRAINT &mw_prefix.mwuser_pk PRIMARY KEY 
(user_id);
 CREATE UNIQUE INDEX &mw_prefix.mwuser_u01 ON &mw_prefix.mwuser (user_name);
 CREATE INDEX &mw_prefix.mwuser_i01 ON &mw_prefix.mwuser (user_email_token);
+CREATE INDEX &mw_prefix.mwuser_i02 ON &mw_prefix.mwuser (user_email, 
user_name);
 
 -- Create a dummy user to satisfy fk contraints especially with revisions
 INSERT INTO &mw_prefix.mwuser
@@ -47,7 +48,7 @@
 
 CREATE TABLE &mw_prefix.user_properties (
   up_user NUMBER NOT NULL,
-  up_property VARCHAR2(32) NOT NULL,
+  up_property VARCHAR2(255) NOT NULL,
   up_value CLOB
 );
 CREATE UNIQUE INDEX &mw_prefix.user_properties_u01 on 
&mw_prefix.user_properties (up_user,up_property);
@@ -636,6 +637,14 @@
 );
 CREATE UNIQUE INDEX &mw_prefix.module_deps_u01 ON &mw_prefix.module_deps 
(md_module, md_skin);
 
+CREATE TABLE &mw_prefix.config (
+  cf_name VARCHAR2(255) NOT NULL,
+  cf_value blob NOT NULL
+);
+ALTER TABLE &mw_prefix.config ADD CONSTRAINT &mw_prefix.config_pk PRIMARY KEY 
(cf_name);
+-- leaving index out for now ... 
+
+
 -- do not prefix this table as it breaks parserTests
 CREATE TABLE wiki_field_info_full (
 table_name VARCHAR2(35) NOT NULL,


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to