* - queryLogger: PSR-3 logger instance. [optional]
* - perfLogger: PSR-3 logger instance. [optional]
* - errorLogger : Callback that takes an Exception and logs it. [optional]
+ * - deprecationLogger: Callback to log a deprecation warning. [optional]
* @throws InvalidArgumentException
*/
public function __construct( array $params );
/**
* Get a connection handle by server index
*
- * Avoid using CONN_TRX_AUTO with sqlite (e.g. check getServerType() first)
+ * The CONN_TRX_AUTO flag is ignored for databases with ATTR_DB_LEVEL_LOCKING
+ * (e.g. sqlite) in order to avoid deadlocks. ILoadBalancer::getServerAttributes()
+ * can be used to check such flags beforehand.
*
* If the caller uses $domain or sets CONN_TRX_AUTO in $flags, then it must also
* call ILoadBalancer::reuseConnection() on the handle when finished using it.
* In all other cases, this is not necessary, though not harmful either.
*
- * @param int $i Server index or DB_MASTER/DB_REPLICA
+ * @param int $i Server index (overrides $groups) or DB_MASTER/DB_REPLICA
* @param array|string|bool $groups Query group(s), or false for the generic reader
* @param string|bool $domain Domain ID, or false for the current domain
* @param int $flags Bitfield of CONN_* class constants
*
* The handle's methods simply wrap those of a Database handle
*
- * Avoid using CONN_TRX_AUTO with sqlite (e.g. check getServerType() first)
+ * The CONN_TRX_AUTO flag is ignored for databases with ATTR_DB_LEVEL_LOCKING
+ * (e.g. sqlite) in order to avoid deadlocks. ILoadBalancer::getServerAttributes()
+ * can be used to check such flags beforehand.
*
* @see ILoadBalancer::getConnection() for parameter information
*
*
* The handle's methods simply wrap those of a Database handle
*
- * Avoid using CONN_TRX_AUTO with sqlite (e.g. check getServerType() first)
+ * The CONN_TRX_AUTO flag is ignored for databases with ATTR_DB_LEVEL_LOCKING
+ * (e.g. sqlite) in order to avoid deadlocks. ILoadBalancer::getServerAttributes()
+ * can be used to check such flags beforehand.
*
* @see ILoadBalancer::getConnection() for parameter information
*
*
* The handle's methods simply wrap those of a Database handle
*
- * Avoid using CONN_TRX_AUTO with sqlite (e.g. check getServerType() first)
+ * The CONN_TRX_AUTO flag is ignored for databases with ATTR_DB_LEVEL_LOCKING
+ * (e.g. sqlite) in order to avoid deadlocks. ILoadBalancer::getServerAttributes()
+ * can be used to check such flags beforehand.
*
* @see ILoadBalancer::getConnection() for parameter information
*
* The index must be an actual index into the array. If a connection to the server is
* already open and not considered an "in use" foreign connection, this simply returns it.
*
- * Avoid using CONN_TRX_AUTO with sqlite (e.g. check getServerType() first)
+ * Avoid using CONN_TRX_AUTO for databases with ATTR_DB_LEVEL_LOCKING (e.g. sqlite) in
+ * order to avoid deadlocks. ILoadBalancer::getServerAttributes() can be used to check
+ * such flags beforehand.
*
* If the caller uses $domain or sets CONN_TRX_AUTO in $flags, then it must also
* call ILoadBalancer::reuseConnection() on the handle when finished using it.
*/
public function getServerType( $i );
+ /**
+ * @param int $i Server index
+ * @return array (Database::ATTRIBUTE_* constant => value) for all such constants
+ * @since 1.31
+ */
+ public function getServerAttributes( $i );
+
/**
* Get the current master position for chronology control purposes
* @return DBMasterPos|bool Returns false if not applicable
* @param array[] $aliases Map of (table => (dbname, schema, prefix) map)
*/
public function setTableAliases( array $aliases );
+
+ /**
+ * Convert certain index names to alternative names before querying the DB
+ *
+ * Note that this applies to indexes regardless of the table they belong to.
+ *
+ * This can be employed when an index was renamed X => Y in code, but the new Y-named
+ * indexes were not yet built on all DBs. After all the Y-named ones are added by the DBA,
+ * the aliases can be removed, and then the old X-named indexes dropped.
+ *
+ * @param string[] $aliases
+ * @return mixed
+ * @since 1.31
+ */
+ public function setIndexAliases( array $aliases );
}