Fix __toString method of DatabaseMysqli
authorBrian Wolff <bawolff+wn@gmail.com>
Sat, 1 Mar 2014 03:55:00 +0000 (23:55 -0400)
committerBrian Wolff <bawolff+wn@gmail.com>
Sat, 1 Mar 2014 03:59:54 +0000 (23:59 -0400)
The superclass was casting mConn to string. For Mysql class this
is just the resource number. However for mysqli objects, that is
a fatal. thread_id seemed like the most convinenent id-ish number
to return instead.

Only really noticeable if you have $wgDebugTransactions = true;

Change-Id: I014bb7ab81d18c5bd07a267939b66a0a6161eb8d

includes/db/DatabaseMysqli.php

index e202f8a..635909c 100644 (file)
@@ -281,4 +281,18 @@ class DatabaseMysqli extends DatabaseMysqlBase {
        protected function mysqlPing() {
                return $this->mConn->ping();
        }
+
+       /**
+        * Give an id for the connection
+        *
+        * mysql driver used resource id, but mysqli objects cannot be cast to string.
+        */
+       public function __toString() {
+               if ( $this->mConn instanceof Mysqli ) {
+                       return (string)$this->mConn->thread_id;
+               } else {
+                       // mConn might be false or something.
+                       return (string)$this->mConn;
+               }
+       }
 }