* @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
*/
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 );
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
*/
public function setTableAliases( array $aliases );
}
+
+class_alias( IDatabase::class, 'IDatabase' );