Fix some postgres test failures
[lhc/web/wiklou.git] / includes / libs / rdbms / database / IDatabase.php
index 6bc870b..bec26a6 100644 (file)
  * @file
  * @ingroup Database
  */
+namespace Wikimedia\Rdbms;
+
 use Wikimedia\ScopedCallback;
-use Wikimedia\Rdbms\Blob;
-use Wikimedia\Rdbms\LikeMatch;
-use Wikimedia\Rdbms\DBMasterPos;
-use Wikimedia\Rdbms\Field;
-use Wikimedia\Rdbms\IResultWrapper;
+use Exception;
+use RuntimeException;
+use UnexpectedValueException;
+use stdClass;
 
 /**
  * Basic database interface for live and lazy-loaded relation database handles
@@ -1028,11 +1029,25 @@ interface IDatabase {
         */
        public function buildStringCast( $field );
 
+       /**
+        * Returns true if DBs are assumed to be on potentially different servers
+        *
+        * In systems like mysql/mariadb, different databases can easily be referenced on a single
+        * connection merely by name, even in a single query via JOIN. On the other hand, Postgres
+        * treats databases as fully separate, only allowing mechanisms like postgres_fdw to
+        * effectively "mount" foreign DBs. This is true even among DBs on the same server.
+        *
+        * @return bool
+        * @since 1.29
+        */
+       public function databasesAreIndependent();
+
        /**
         * Change the current database
         *
         * @param string $db
         * @return bool Success or failure
+        * @throws DBConnectionError If databasesAreIndependent() is true and an error occurs
         */
        public function selectDB( $db );
 
@@ -1261,7 +1276,7 @@ interface IDatabase {
        public function conditional( $cond, $trueVal, $falseVal );
 
        /**
-        * Returns a comand for str_replace function in SQL query.
+        * Returns a command for str_replace function in SQL query.
         * Uses REPLACE() in MySQL
         *
         * @param string $orig Column to modify
@@ -1802,3 +1817,5 @@ interface IDatabase {
         */
        public function setTableAliases( array $aliases );
 }
+
+class_alias( IDatabase::class, 'IDatabase' );