Umherirrender has uploaded a new change for review. https://gerrit.wikimedia.org/r/296066
Change subject: Added a Database::buildStringCast and use on int/string join ...................................................................... Added a Database::buildStringCast and use on int/string join The database specific sql is untested, but sql is taken from docs mssql - knows about implict casts - https://technet.microsoft.com/en-us/library/ms191530(v=sql.105).aspx mysql - knows about implict casts oracle - https://docs.oracle.com/javadb/10.8.3.0/ref/rrefsqlj33562.html postgresql - https://www.postgresql.org/docs/9.2/static/sql-expressions.html#SQL-SYNTAX-TYPE-CASTS sqlite - http://www.sqlite.org/lang_expr.html Bug: T69065 Change-Id: I3a83276dc65aae58124460af1810d37dff52e943 --- M includes/db/Database.php M includes/db/DatabaseOracle.php M includes/db/DatabasePostgres.php M includes/db/DatabaseSqlite.php M includes/specials/SpecialProtectedpages.php 5 files changed, 37 insertions(+), 1 deletion(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/66/296066/1 diff --git a/includes/db/Database.php b/includes/db/Database.php index 6bdcb24..413240b 100644 --- a/includes/db/Database.php +++ b/includes/db/Database.php @@ -1642,6 +1642,15 @@ return '(' . $this->selectSQLText( $table, $fld, $conds, null, [], $join_conds ) . ')'; } + /** + * @param string $field Field or column to cast + * @return string + * @since 1.28 + */ + public function buildStringCast( $field ) { + return $field; + } + public function selectDB( $db ) { # Stub. Shouldn't cause serious problems if it's not overridden, but # if your database engine supports a concept similar to MySQL's diff --git a/includes/db/DatabaseOracle.php b/includes/db/DatabaseOracle.php index 9e53653..13cfddf 100644 --- a/includes/db/DatabaseOracle.php +++ b/includes/db/DatabaseOracle.php @@ -1543,6 +1543,15 @@ return '(' . $this->selectSQLText( $table, $fld, $conds, null, [], $join_conds ) . ')'; } + /** + * @param string $field Field or column to cast + * @return string + * @since 1.28 + */ + public function buildStringCast( $field ) { + return 'CAST ( ' . $field . ' AS VARCHAR2 )'; + } + public function getSearchEngine() { return 'SearchOracle'; } diff --git a/includes/db/DatabasePostgres.php b/includes/db/DatabasePostgres.php index 839d6a0..7db9f6e 100644 --- a/includes/db/DatabasePostgres.php +++ b/includes/db/DatabasePostgres.php @@ -1530,6 +1530,15 @@ return '(' . $this->selectSQLText( $table, $fld, $conds, null, [], $join_conds ) . ')'; } + /** + * @param string $field Field or column to cast + * @return string + * @since 1.28 + */ + public function buildStringCast( $field ) { + return $field . '::text'; + } + public function getSearchEngine() { return 'SearchPostgres'; } diff --git a/includes/db/DatabaseSqlite.php b/includes/db/DatabaseSqlite.php index 9d0a0f7..b90724b 100644 --- a/includes/db/DatabaseSqlite.php +++ b/includes/db/DatabaseSqlite.php @@ -833,6 +833,15 @@ } /** + * @param string $field Field or column to cast + * @return string + * @since 1.28 + */ + public function buildStringCast( $field ) { + return 'CAST ( ' . $field . ' AS TEXT )'; + } + + /** * @return string */ public function getSearchEngine() { diff --git a/includes/specials/SpecialProtectedpages.php b/includes/specials/SpecialProtectedpages.php index 54b471e..2d62941 100644 --- a/includes/specials/SpecialProtectedpages.php +++ b/includes/specials/SpecialProtectedpages.php @@ -537,7 +537,7 @@ 'join_conds' => [ 'log_search' => [ 'LEFT JOIN', [ - 'ls_field' => 'pr_id', 'ls_value = pr_id' + 'ls_field' => 'pr_id', 'ls_value = ' . $this->mDb->buildStringCast( 'pr_id' ) ] ], 'logging' => [ -- To view, visit https://gerrit.wikimedia.org/r/296066 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3a83276dc65aae58124460af1810d37dff52e943 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Umherirrender <umherirrender_de...@web.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits