Aaron Schulz has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/312049

Change subject: Check mSessionTempTables in Database::tableExists()
......................................................................

Check mSessionTempTables in Database::tableExists()

Bug: T146300
Change-Id: Ia8306ec25e63adcdcf0dcc8f6a700dd01afdc948
---
M includes/libs/rdbms/database/Database.php
M includes/libs/rdbms/database/DatabaseMysqlBase.php
2 files changed, 9 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/49/312049/1

diff --git a/includes/libs/rdbms/database/Database.php 
b/includes/libs/rdbms/database/Database.php
index 9993277..b42f1b3 100644
--- a/includes/libs/rdbms/database/Database.php
+++ b/includes/libs/rdbms/database/Database.php
@@ -204,7 +204,7 @@
        /** @var array Map of (name => 1) for locks obtained via lock() */
        private $mNamedLocksHeld = [];
        /** @var array Map of (table name => 1) for TEMPORARY tables */
-       private $mSessionTempTables = [];
+       protected $mSessionTempTables = [];
 
        /** @var IDatabase|null Lazy handle to the master DB this server 
replicates from */
        private $lazyMasterHandle;
@@ -1400,6 +1400,10 @@
        }
 
        public function tableExists( $table, $fname = __METHOD__ ) {
+               if ( isset( $this->mSessionTempTables[$table] ) ) {
+                       return true; // already known to exists
+               }
+
                $table = $this->tableName( $table );
                $old = $this->ignoreErrors( true );
                $res = $this->query( "SELECT 1 FROM $table LIMIT 1", $fname );
diff --git a/includes/libs/rdbms/database/DatabaseMysqlBase.php 
b/includes/libs/rdbms/database/DatabaseMysqlBase.php
index 39cf5bc..e5c35f4 100644
--- a/includes/libs/rdbms/database/DatabaseMysqlBase.php
+++ b/includes/libs/rdbms/database/DatabaseMysqlBase.php
@@ -519,6 +519,10 @@
        }
 
        function tableExists( $table, $fname = __METHOD__ ) {
+               if ( isset( $this->mSessionTempTables[$table] ) ) {
+                       return true; // already known to exists and won't show 
in SHOW TABLES anyway
+               }
+
                $table = $this->tableName( $table, 'raw' );
                $encLike = $this->buildLike( $table );
 

-- 
To view, visit https://gerrit.wikimedia.org/r/312049
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia8306ec25e63adcdcf0dcc8f6a700dd01afdc948
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Aaron Schulz <asch...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to