X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Flibs%2Frdbms%2Fdatabase%2FDatabaseMssql.php;h=8f3cab831486e2203a3fdc3ffa12c9c6f7fde46f;hb=178bada116bc5aa336191f4867fec5cae2258cd6;hp=75ddc9d51413442fcea5f9f8fe2cf991ce6a01c2;hpb=980c688c2b9833fd83c3f4a7f5bf75031a071c74;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/libs/rdbms/database/DatabaseMssql.php b/includes/libs/rdbms/database/DatabaseMssql.php index 75ddc9d514..8f3cab8314 100644 --- a/includes/libs/rdbms/database/DatabaseMssql.php +++ b/includes/libs/rdbms/database/DatabaseMssql.php @@ -24,11 +24,12 @@ * @author Ryan Biesemeyer * @author Ryan Schmidt */ -use Wikimedia\Rdbms\Blob; -use Wikimedia\Rdbms\MssqlBlob; -use Wikimedia\Rdbms\MssqlField; -use Wikimedia\Rdbms\ResultWrapper; -use Wikimedia\Rdbms\MssqlResultWrapper; + +namespace Wikimedia\Rdbms; + +use MediaWiki; +use Exception; +use stdClass; /** * @ingroup Database @@ -716,11 +717,12 @@ class DatabaseMssql extends Database { * @param string $fname * @param array $insertOptions * @param array $selectOptions + * @param array $selectJoinConds * @return null|ResultWrapper * @throws Exception */ public function nativeInsertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__, - $insertOptions = [], $selectOptions = [] + $insertOptions = [], $selectOptions = [], $selectJoinConds = [] ) { $this->mScrollableCursor = false; try { @@ -731,7 +733,8 @@ class DatabaseMssql extends Database { $conds, $fname, $insertOptions, - $selectOptions + $selectOptions, + $selectJoinConds ); } catch ( Exception $e ) { $this->mScrollableCursor = true; @@ -1109,27 +1112,11 @@ class DatabaseMssql extends Database { * @param string $s * @return string */ - protected function escapeLikeInternal( $s ) { - return addcslashes( $s, '\%_[]^' ); - } - - /** - * MS SQL requires specifying the escape character used in a LIKE query - * or using Square brackets to surround characters that are to be escaped - * https://msdn.microsoft.com/en-us/library/ms179859.aspx - * Here we take the Specify-Escape-Character approach since it's less - * invasive, renders a query that is closer to other DB's and better at - * handling square bracket escaping - * - * @return string Fully built LIKE statement - */ - public function buildLike() { - $params = func_get_args(); - if ( count( $params ) > 0 && is_array( $params[0] ) ) { - $params = $params[0]; - } - - return parent::buildLike( $params ) . " ESCAPE '\' "; + protected function escapeLikeInternal( $s, $escapeChar = '`' ) { + return str_replace( [ $escapeChar, '%', '_', '[', ']', '^' ], + [ "{$escapeChar}{$escapeChar}", "{$escapeChar}%", "{$escapeChar}_", + "{$escapeChar}[", "{$escapeChar}]", "{$escapeChar}^" ], + $s ); } /** @@ -1360,3 +1347,5 @@ class DatabaseMssql extends Database { return $old; } } + +class_alias( DatabaseMssql::class, 'DatabaseMssql' );