Aaron Schulz has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/336371 )
Change subject: Move IDatabase/IMaintainableDatabase to Rdbms namespace ...................................................................... Move IDatabase/IMaintainableDatabase to Rdbms namespace Added compat.php file with aliases for the old global interfaces. Database is marked as implementing both, so that both global and namespaced type hints of IDatabase work. The former can be removed once all type-hints have been migrated. Change-Id: If7e8a8ff574661fd827de8bcec11d2c39a687300 --- M autoload.php M includes/libs/rdbms/connectionmanager/ConnectionManager.php M includes/libs/rdbms/database/DBConnRef.php M includes/libs/rdbms/database/Database.php M includes/libs/rdbms/database/IDatabase.php M includes/libs/rdbms/database/IMaintainableDatabase.php M includes/libs/rdbms/database/MaintainableDBConnRef.php A includes/libs/rdbms/database/compat.php M includes/libs/rdbms/database/resultwrapper/ResultWrapper.php M includes/libs/rdbms/defines.php M includes/libs/rdbms/exception/DBConnectionError.php M includes/libs/rdbms/exception/DBError.php M includes/libs/rdbms/exception/DBExpectedError.php M includes/libs/rdbms/exception/DBQueryError.php M includes/libs/rdbms/lbfactory/LBFactory.php M includes/libs/rdbms/lbfactory/LBFactoryMulti.php M includes/libs/rdbms/lbfactory/LBFactorySingle.php M includes/libs/rdbms/loadbalancer/ILoadBalancer.php M includes/libs/rdbms/loadbalancer/LoadBalancer.php M includes/libs/rdbms/loadbalancer/LoadBalancerSingle.php M includes/libs/rdbms/loadmonitor/LoadMonitor.php M includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php 22 files changed, 63 insertions(+), 12 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/71/336371/1 diff --git a/autoload.php b/autoload.php index 970dff0..e919381 100644 --- a/autoload.php +++ b/autoload.php @@ -592,14 +592,14 @@ 'ICacheHelper' => __DIR__ . '/includes/cache/CacheHelper.php', 'IContextSource' => __DIR__ . '/includes/context/IContextSource.php', 'IDBAccessObject' => __DIR__ . '/includes/dao/IDBAccessObject.php', - 'IDatabase' => __DIR__ . '/includes/libs/rdbms/database/IDatabase.php', + 'IDatabase' => __DIR__ . '/includes/libs/rdbms/database/compat.php', 'IEContentAnalyzer' => __DIR__ . '/includes/libs/mime/IEContentAnalyzer.php', 'IEUrlExtension' => __DIR__ . '/includes/libs/IEUrlExtension.php', 'IExpiringStore' => __DIR__ . '/includes/libs/objectcache/IExpiringStore.php', 'IJobSpecification' => __DIR__ . '/includes/jobqueue/JobSpecification.php', 'ILoadBalancer' => __DIR__ . '/includes/libs/rdbms/loadbalancer/ILoadBalancer.php', 'ILocalizedException' => __DIR__ . '/includes/exception/LocalizedException.php', - 'IMaintainableDatabase' => __DIR__ . '/includes/libs/rdbms/database/IMaintainableDatabase.php', + 'IMaintainableDatabase' => __DIR__ . '/includes/libs/rdbms/database/compat.php', 'IP' => __DIR__ . '/includes/libs/IP.php', 'IPSet' => __DIR__ . '/includes/compat/IPSetCompat.php', 'IPTC' => __DIR__ . '/includes/media/IPTC.php', @@ -1587,8 +1587,10 @@ 'WikiTextStructure' => __DIR__ . '/includes/content/WikiTextStructure.php', 'Wikimedia\\Rdbms\\ChronologyProtector' => __DIR__ . '/includes/libs/rdbms/ChronologyProtector.php', 'Wikimedia\\Rdbms\\ConnectionManager' => __DIR__ . '/includes/libs/rdbms/connectionmanager/ConnectionManager.php', + 'Wikimedia\\Rdbms\\IDatabase' => __DIR__ . '/includes/libs/rdbms/database/IDatabase.php', 'Wikimedia\\Rdbms\\ILBFactory' => __DIR__ . '/includes/libs/rdbms/lbfactory/ILBFactory.php', 'Wikimedia\\Rdbms\\ILoadMonitor' => __DIR__ . '/includes/libs/rdbms/loadmonitor/ILoadMonitor.php', + 'Wikimedia\\Rdbms\\IMaintainableDatabase' => __DIR__ . '/includes/libs/rdbms/database/IMaintainableDatabase.php', 'Wikimedia\\Rdbms\\LBFactory' => __DIR__ . '/includes/libs/rdbms/lbfactory/LBFactory.php', 'Wikimedia\\Rdbms\\LBFactoryMulti' => __DIR__ . '/includes/libs/rdbms/lbfactory/LBFactoryMulti.php', 'Wikimedia\\Rdbms\\LBFactorySimple' => __DIR__ . '/includes/libs/rdbms/lbfactory/LBFactorySimple.php', diff --git a/includes/libs/rdbms/connectionmanager/ConnectionManager.php b/includes/libs/rdbms/connectionmanager/ConnectionManager.php index 4f72f77..1e65934 100644 --- a/includes/libs/rdbms/connectionmanager/ConnectionManager.php +++ b/includes/libs/rdbms/connectionmanager/ConnectionManager.php @@ -4,7 +4,6 @@ use Database; use DBConnRef; -use IDatabase; use InvalidArgumentException; use LoadBalancer; diff --git a/includes/libs/rdbms/database/DBConnRef.php b/includes/libs/rdbms/database/DBConnRef.php index b268b9f..550055d 100644 --- a/includes/libs/rdbms/database/DBConnRef.php +++ b/includes/libs/rdbms/database/DBConnRef.php @@ -1,4 +1,7 @@ <?php + +use Wikimedia\Rdbms\IDatabase; + /** * Helper class to handle automatically marking connections as reusable (via RAII pattern) * as well handling deferring the actual network connection until the handle is used diff --git a/includes/libs/rdbms/database/Database.php b/includes/libs/rdbms/database/Database.php index d15d6f1..c815ce3 100644 --- a/includes/libs/rdbms/database/Database.php +++ b/includes/libs/rdbms/database/Database.php @@ -27,6 +27,8 @@ use Psr\Log\LoggerInterface; use Wikimedia\ScopedCallback; use Wikimedia\Rdbms\TransactionProfiler; +use Wikimedia\Rdbms\IDatabase; +use Wikimedia\Rdbms\IMaintainableDatabase; /** * Relational database abstraction object @@ -34,7 +36,11 @@ * @ingroup Database * @since 1.28 */ -abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAwareInterface { +abstract class Database + implements IDatabase, IMaintainableDatabase, LoggerAwareInterface, + // Implement compat.php interfaces until that is removed + \IDatabase, \IMaintainableDatabase +{ /** Number of times to re-try an operation in case of deadlock */ const DEADLOCK_TRIES = 4; /** Minimum time to wait before retry, in microseconds */ @@ -360,7 +366,7 @@ } $class = 'Database' . ucfirst( $driver ); - if ( class_exists( $class ) && is_subclass_of( $class, 'IDatabase' ) ) { + if ( class_exists( $class ) && is_subclass_of( $class, IDatabase::class ) ) { // Resolve some defaults for b/c $p['host'] = isset( $p['host'] ) ? $p['host'] : false; $p['user'] = isset( $p['user'] ) ? $p['user'] : false; diff --git a/includes/libs/rdbms/database/IDatabase.php b/includes/libs/rdbms/database/IDatabase.php index c6055db..893cacd 100644 --- a/includes/libs/rdbms/database/IDatabase.php +++ b/includes/libs/rdbms/database/IDatabase.php @@ -23,7 +23,22 @@ * @file * @ingroup Database */ +namespace Wikimedia\Rdbms; + use Wikimedia\ScopedCallback; +use DBError; +use DBConnectionError; +use DBUnexpectedError; +use DBQueryError; +use Exception; +use RuntimeException; +use UnexpectedValueException; +use ResultWrapper; +use Field; +use LikeMatch; +use Blob; +use DBMasterPos; +use stdClass; /** * Basic database interface for live and lazy-loaded relation database handles diff --git a/includes/libs/rdbms/database/IMaintainableDatabase.php b/includes/libs/rdbms/database/IMaintainableDatabase.php index 43cec28..1ac652a 100644 --- a/includes/libs/rdbms/database/IMaintainableDatabase.php +++ b/includes/libs/rdbms/database/IMaintainableDatabase.php @@ -22,6 +22,12 @@ * @file * @ingroup Database */ +namespace Wikimedia\Rdbms; + +use ResultWrapper; +use Exception; +use RuntimeException; +use DBUnexpectedError; /** * Advanced database interface for IDatabase handles that include maintenance methods diff --git a/includes/libs/rdbms/database/MaintainableDBConnRef.php b/includes/libs/rdbms/database/MaintainableDBConnRef.php index fa3ddf9..b5ff575 100644 --- a/includes/libs/rdbms/database/MaintainableDBConnRef.php +++ b/includes/libs/rdbms/database/MaintainableDBConnRef.php @@ -1,4 +1,7 @@ <?php + +use Wikimedia\Rdbms\IMaintainableDatabase; + /** * Helper class to handle automatically marking connections as reusable (via RAII pattern) * as well handling deferring the actual network connection until the handle is used diff --git a/includes/libs/rdbms/database/compat.php b/includes/libs/rdbms/database/compat.php new file mode 100644 index 0000000..13ec898 --- /dev/null +++ b/includes/libs/rdbms/database/compat.php @@ -0,0 +1,9 @@ +<?php + +interface IDatabase extends Wikimedia\Rdbms\IDatabase { + // Temporary global IDatabase alias which all Database objects also implement +} + +interface IMaintainableDatabase extends Wikimedia\Rdbms\IMaintainableDatabase { + // Temporary global IDatabase alias which all Database objects also implement +} diff --git a/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php b/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php index 53109c8..da1ab01 100644 --- a/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php +++ b/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php @@ -1,4 +1,7 @@ <?php + +use Wikimedia\Rdbms\IDatabase; + /** * Result wrapper for grabbing data queried from an IDatabase object * diff --git a/includes/libs/rdbms/defines.php b/includes/libs/rdbms/defines.php index 692a704b..287ad1e 100644 --- a/includes/libs/rdbms/defines.php +++ b/includes/libs/rdbms/defines.php @@ -1,5 +1,7 @@ <?php +use Wikimedia\Rdbms\IDatabase; + /**@{ * Database related constants */ diff --git a/includes/libs/rdbms/exception/DBConnectionError.php b/includes/libs/rdbms/exception/DBConnectionError.php index 47f8c96..dca1302 100644 --- a/includes/libs/rdbms/exception/DBConnectionError.php +++ b/includes/libs/rdbms/exception/DBConnectionError.php @@ -18,6 +18,7 @@ * @file * @ingroup Database */ +use Wikimedia\Rdbms\IDatabase; /** * @ingroup Database diff --git a/includes/libs/rdbms/exception/DBError.php b/includes/libs/rdbms/exception/DBError.php index 526596d..226c675 100644 --- a/includes/libs/rdbms/exception/DBError.php +++ b/includes/libs/rdbms/exception/DBError.php @@ -18,6 +18,7 @@ * @file * @ingroup Database */ +use Wikimedia\Rdbms\IDatabase; /** * Database error base class diff --git a/includes/libs/rdbms/exception/DBExpectedError.php b/includes/libs/rdbms/exception/DBExpectedError.php index 7d303b1..57538a8 100644 --- a/includes/libs/rdbms/exception/DBExpectedError.php +++ b/includes/libs/rdbms/exception/DBExpectedError.php @@ -18,6 +18,7 @@ * @file * @ingroup Database */ +use Wikimedia\Rdbms\IDatabase; /** * Base class for the more common types of database errors. These are known to occur diff --git a/includes/libs/rdbms/exception/DBQueryError.php b/includes/libs/rdbms/exception/DBQueryError.php index 002d253..b4c3d52 100644 --- a/includes/libs/rdbms/exception/DBQueryError.php +++ b/includes/libs/rdbms/exception/DBQueryError.php @@ -18,6 +18,7 @@ * @file * @ingroup Database */ +use Wikimedia\Rdbms\IDatabase; /** * @ingroup Database diff --git a/includes/libs/rdbms/lbfactory/LBFactory.php b/includes/libs/rdbms/lbfactory/LBFactory.php index 7a2ad3f..d64d6ef 100644 --- a/includes/libs/rdbms/lbfactory/LBFactory.php +++ b/includes/libs/rdbms/lbfactory/LBFactory.php @@ -32,7 +32,6 @@ use Exception; use RuntimeException; use ILoadBalancer; -use IDatabase; use LoadBalancer; use DBTransactionError; use DBReplicationWaitError; diff --git a/includes/libs/rdbms/lbfactory/LBFactoryMulti.php b/includes/libs/rdbms/lbfactory/LBFactoryMulti.php index 643b110..094b821 100644 --- a/includes/libs/rdbms/lbfactory/LBFactoryMulti.php +++ b/includes/libs/rdbms/lbfactory/LBFactoryMulti.php @@ -24,7 +24,6 @@ namespace Wikimedia\Rdbms; use LoadBalancer; -use IDatabase; use DatabaseDomain; use InvalidArgumentException; diff --git a/includes/libs/rdbms/lbfactory/LBFactorySingle.php b/includes/libs/rdbms/lbfactory/LBFactorySingle.php index f992643..b9a90e8 100644 --- a/includes/libs/rdbms/lbfactory/LBFactorySingle.php +++ b/includes/libs/rdbms/lbfactory/LBFactorySingle.php @@ -24,7 +24,6 @@ namespace Wikimedia\Rdbms; use LoadBalancerSingle; -use IDatabase; use InvalidArgumentException; use BadMethodCallException; diff --git a/includes/libs/rdbms/loadbalancer/ILoadBalancer.php b/includes/libs/rdbms/loadbalancer/ILoadBalancer.php index fc306b4..af1e3d7 100644 --- a/includes/libs/rdbms/loadbalancer/ILoadBalancer.php +++ b/includes/libs/rdbms/loadbalancer/ILoadBalancer.php @@ -21,6 +21,7 @@ * @ingroup Database * @author Aaron Schulz */ +use Wikimedia\Rdbms\IDatabase; /** * Database cluster connection, tracking, load balancing, and transaction manager interface @@ -447,7 +448,7 @@ /** * @note This method may trigger a DB connection if not yet done * @param string|bool $domain Domain ID, or false for the current domain - * @param IDatabase|null DB master connection; used to avoid loops [optional] + * @param IDatabase|null $conn DB master connection; used to avoid loops [optional] * @return string|bool Reason the master is read-only or false if it is not */ public function getReadOnlyReason( $domain = false, IDatabase $conn = null ); diff --git a/includes/libs/rdbms/loadbalancer/LoadBalancer.php b/includes/libs/rdbms/loadbalancer/LoadBalancer.php index baac3d0..52d93bf 100644 --- a/includes/libs/rdbms/loadbalancer/LoadBalancer.php +++ b/includes/libs/rdbms/loadbalancer/LoadBalancer.php @@ -25,6 +25,7 @@ use Wikimedia\ScopedCallback; use Wikimedia\Rdbms\TransactionProfiler; use Wikimedia\Rdbms\ILoadMonitor; +use Wikimedia\Rdbms\IDatabase; /** * Database connection, tracking, load balancing, and transaction manager for a cluster @@ -1349,7 +1350,7 @@ /** * @param string $domain Domain ID, or false for the current domain - * @param IDatabase|null DB master connectionl used to avoid loops [optional] + * @param IDatabase|null $conn DB master connectionl used to avoid loops [optional] * @return bool */ private function masterRunningReadOnly( $domain, IDatabase $conn = null ) { diff --git a/includes/libs/rdbms/loadbalancer/LoadBalancerSingle.php b/includes/libs/rdbms/loadbalancer/LoadBalancerSingle.php index 0a05202..7b7b003 100644 --- a/includes/libs/rdbms/loadbalancer/LoadBalancerSingle.php +++ b/includes/libs/rdbms/loadbalancer/LoadBalancerSingle.php @@ -21,6 +21,8 @@ * @ingroup Database */ +use Wikimedia\Rdbms\IDatabase; + /** * Trivial LoadBalancer that always returns an injected connection handle */ diff --git a/includes/libs/rdbms/loadmonitor/LoadMonitor.php b/includes/libs/rdbms/loadmonitor/LoadMonitor.php index f1a6d07..2160faa 100644 --- a/includes/libs/rdbms/loadmonitor/LoadMonitor.php +++ b/includes/libs/rdbms/loadmonitor/LoadMonitor.php @@ -25,7 +25,6 @@ use Psr\Log\NullLogger; use Wikimedia\ScopedCallback; use ILoadBalancer; -use IDatabase; use BagOStuff; /** diff --git a/includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php b/includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php index afb3a23..3e8b943 100644 --- a/includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php +++ b/includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php @@ -22,7 +22,6 @@ namespace Wikimedia\Rdbms; use ILoadBalancer; -use IDatabase; use BagOStuff; /** -- To view, visit https://gerrit.wikimedia.org/r/336371 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If7e8a8ff574661fd827de8bcec11d2c39a687300 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