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

Reply via email to