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