const FLD_INDEX = 0;
const FLD_GROUP = 1;
const FLD_DOMAIN = 2;
+ const FLD_FLAGS = 3;
/**
* @param ILoadBalancer $lb Connection manager for $conn
- * @param Database|array $conn New connection handle or (server index, query groups, domain)
+ * @param Database|array $conn Database handle or (server index, query groups, domain, flags)
*/
public function __construct( ILoadBalancer $lb, $conn ) {
$this->lb = $lb;
if ( $conn instanceof Database ) {
$this->conn = $conn; // live handle
- } elseif ( count( $conn ) >= 3 && $conn[self::FLD_DOMAIN] !== false ) {
+ } elseif ( count( $conn ) >= 4 && $conn[self::FLD_DOMAIN] !== false ) {
$this->params = $conn;
} else {
throw new InvalidArgumentException( "Missing lazy connection arguments." );
function __call( $name, array $arguments ) {
if ( $this->conn === null ) {
- list( $db, $groups, $wiki ) = $this->params;
- $this->conn = $this->lb->getConnection( $db, $groups, $wiki );
+ list( $db, $groups, $wiki, $flags ) = $this->params;
+ $this->conn = $this->lb->getConnection( $db, $groups, $wiki, $flags );
}
return call_user_func_array( [ $this->conn, $name ], $arguments );
}
public function estimateRowCount(
- $table, $vars = '*', $conds = '', $fname = __METHOD__, $options = []
+ $table, $vars = '*', $conds = '', $fname = __METHOD__, $options = [], $join_conds = []
) {
return $this->__call( __FUNCTION__, func_get_args() );
}
return $this->__call( __FUNCTION__, func_get_args() );
}
+ public function buildSubstring( $input, $startPosition, $length = null ) {
+ return $this->__call( __FUNCTION__, func_get_args() );
+ }
+
public function buildStringCast( $field ) {
return $this->__call( __FUNCTION__, func_get_args() );
}
+ public function buildIntegerCast( $field ) {
+ return $this->__call( __FUNCTION__, func_get_args() );
+ }
+
+ public function buildSelectSubquery(
+ $table, $vars, $conds = '', $fname = __METHOD__,
+ $options = [], $join_conds = []
+ ) {
+ return $this->__call( __FUNCTION__, func_get_args() );
+ }
+
public function databasesAreIndependent() {
return $this->__call( __FUNCTION__, func_get_args() );
}
return $this->__call( __FUNCTION__, func_get_args() );
}
- public function wasErrorReissuable() {
+ public function wasConnectionLoss() {
return $this->__call( __FUNCTION__, func_get_args() );
}
return $this->__call( __FUNCTION__, func_get_args() );
}
+ public function wasErrorReissuable() {
+ return $this->__call( __FUNCTION__, func_get_args() );
+ }
+
public function masterPosWait( DBMasterPos $pos, $timeout ) {
return $this->__call( __FUNCTION__, func_get_args() );
}
return $this->__call( __FUNCTION__, func_get_args() );
}
+ public function cancelAtomic( $fname = __METHOD__ ) {
+ return $this->__call( __FUNCTION__, func_get_args() );
+ }
+
public function doAtomicSection( $fname, callable $callback ) {
return $this->__call( __FUNCTION__, func_get_args() );
}
return $this->__call( __FUNCTION__, func_get_args() );
}
+ public function setIndexAliases( array $aliases ) {
+ return $this->__call( __FUNCTION__, func_get_args() );
+ }
+
/**
* Clean up the connection when out of scope
*/