Aaron Schulz has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/320722

Change subject: Depedency inject remappedTableName() map via MWLBFactory
......................................................................

Depedency inject remappedTableName() map via MWLBFactory

Change-Id: I71d3481fc624f665bac81725026647bbb84ae608
---
M includes/db/MWLBFactory.php
M includes/libs/rdbms/database/DatabasePostgres.php
2 files changed, 19 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/22/320722/1

diff --git a/includes/db/MWLBFactory.php b/includes/db/MWLBFactory.php
index bfdce39..42ef685 100644
--- a/includes/db/MWLBFactory.php
+++ b/includes/db/MWLBFactory.php
@@ -64,7 +64,11 @@
                                        if ( $server['type'] === 'sqlite' ) {
                                                $server += [ 'dbDirectory' => 
$mainConfig->get( 'SQLiteDataDir' ) ];
                                        } elseif ( $server['type'] === 
'postgres' ) {
-                                               $server += [ 'port' => 
$mainConfig->get( 'DBport' ) ];
+                                               $server += [
+                                                       'port' => 
$mainConfig->get( 'DBport' ),
+                                                       // Work around the 
reserved word usage in MediaWiki schema
+                                                       'keywordTableMap' => [ 
'user' => 'mwuser', 'text' => 'pagecontent' ]
+                                               ];
                                        }
                                        $lbConf['servers'][$i] = $server + [
                                                'schema' => $mainConfig->get( 
'DBmwschema' ),
@@ -96,6 +100,8 @@
                                        $server[ 'dbDirectory'] = 
$mainConfig->get( 'SQLiteDataDir' );
                                } elseif ( $server['type'] === 'postgres' ) {
                                        $server['port'] = $mainConfig->get( 
'DBport' );
+                                       // Work around the reserved word usage 
in MediaWiki schema
+                                       $server['keywordTableMap'] = [ 'user' 
=> 'mwuser', 'text' => 'pagecontent' ];
                                }
                                $lbConf['servers'] = [ $server ];
                        }
diff --git a/includes/libs/rdbms/database/DatabasePostgres.php 
b/includes/libs/rdbms/database/DatabasePostgres.php
index 41aa5e0..cd02177 100644
--- a/includes/libs/rdbms/database/DatabasePostgres.php
+++ b/includes/libs/rdbms/database/DatabasePostgres.php
@@ -42,9 +42,20 @@
        private $connectString;
        /** @var string */
        private $mCoreSchema;
+       /** @var string[] Map of (reserved table name => alternate table name) 
*/
+       private $keywordTableMap = [];
 
+       /**
+        * @see Database::__construct()
+        * @param array $params Additional parameters include:
+        *   - keywordTableMap : Map of reserved table names to alternative 
table names to use
+        */
        public function __construct( array $params ) {
                $this->port = isset( $params['port'] ) ? $params['port'] : 
false;
+               $this->keywordTableMap = isset( $params['keywordTableMap'] )
+                       ? $params['keywordTableMap']
+                       : [];
+
                parent::__construct( $params );
        }
 
@@ -736,16 +747,9 @@
        /**
         * @param string $name
         * @return string Value of $name or remapped name if $name is a 
reserved keyword
-        * @TODO: dependency inject these...
         */
        public function remappedTableName( $name ) {
-               if ( $name === 'user' ) {
-                       return 'mwuser';
-               } elseif ( $name === 'text' ) {
-                       return 'pagecontent';
-               }
-
-               return $name;
+               return isset( $this->keywordTableMap[$name] ) ? 
$this->keywordTableMap[$name] : $name;
        }
 
        /**

-- 
To view, visit https://gerrit.wikimedia.org/r/320722
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I71d3481fc624f665bac81725026647bbb84ae608
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Aaron Schulz <asch...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to