Page MenuHomePhabricator

mw.db-explain-2.diff

Authored By
bzimport
Nov 21 2014, 11:01 PM
Size
3 KB
Referenced Files
None
Subscribers
None

mw.db-explain-2.diff

diff --git a/includes/db/Database.php b/includes/db/Database.php
index 1bfb8e0..be7fbbc 100644
--- a/includes/db/Database.php
+++ b/includes/db/Database.php
@@ -925,9 +925,6 @@ abstract class DatabaseBase {
isset($options['OFFSET']) ? $options['OFFSET'] : false);
$sql = "$sql $postLimitTail";
- if (isset($options['EXPLAIN'])) {
- $sql = 'EXPLAIN ' . $sql;
- }
return $sql;
}
diff --git a/includes/db/DatabaseMysql.php b/includes/db/DatabaseMysql.php
index ea7ef5b..642f029 100644
--- a/includes/db/DatabaseMysql.php
+++ b/includes/db/DatabaseMysql.php
@@ -235,6 +235,18 @@ class DatabaseMysql extends DatabaseBase {
function affectedRows() { return mysql_affected_rows( $this->mConn ); }
/**
+ * DatabaseBase::selectSQLText can't do quite everything while being RDBMS-agnostic.
+ * Call the parent method, then add on EXPLAIN if necessary.
+ */
+ function selectSQLText( $table, $vars, $conds='', $fname='Database::select', $options = array(), $join_conds = array() ) {
+ $sql = parent::selectSQLText( $table, $vars, $conds, $fname, $options, $join_conds );
+ if(isset($options['EXPLAIN'])){
+ $sql = 'EXPLAIN '.$sql;
+ }
+ return $sql;
+ }
+
+ /**
* Estimate rows in dataset
* Returns estimated count, based on EXPLAIN output
* Takes same arguments as Database::select()
diff --git a/includes/db/DatabaseOracle.php b/includes/db/DatabaseOracle.php
index fee5f40..3e26b57 100644
--- a/includes/db/DatabaseOracle.php
+++ b/includes/db/DatabaseOracle.php
@@ -412,7 +412,19 @@ class DatabaseOracle extends DatabaseBase {
function affectedRows() {
return $this->mAffectedRows;
}
-
+
+ /**
+ * DatabaseBase::selectSQLText can't do quite everything while being RDBMS-agnostic.
+ * Call the parent method, then add on EXPLAIN if necessary.
+ */
+ function selectSQLText( $table, $vars, $conds='', $fname='Database::select', $options = array(), $join_conds = array() ) {
+ $sql = parent::selectSQLText( $table, $vars, $conds, $fname, $options, $join_conds );
+ if(isset($options['EXPLAIN'])){
+ $sql = 'EXPLAIN '.$sql;
+ }
+ return $sql;
+ }
+
/**
* Returns information about an index
* If errors are explicitly ignored, returns NULL on failure
diff --git a/includes/db/DatabasePostgres.php b/includes/db/DatabasePostgres.php
index 0249aad..82e43cc 100644
--- a/includes/db/DatabasePostgres.php
+++ b/includes/db/DatabasePostgres.php
@@ -705,6 +705,18 @@ class DatabasePostgres extends DatabaseBase {
}
/**
+ * DatabaseBase::selectSQLText can't do quite everything while being RDBMS-agnostic.
+ * Call the parent method, then add on EXPLAIN if necessary.
+ */
+ function selectSQLText( $table, $vars, $conds='', $fname='Database::select', $options = array(), $join_conds = array() ) {
+ $sql = parent::selectSQLText( $table, $vars, $conds, $fname, $options, $join_conds );
+ if(isset($options['EXPLAIN'])){
+ $sql = 'EXPLAIN '.$sql;
+ }
+ return $sql;
+ }
+
+ /**
* Estimate rows in dataset
* Returns estimated count, based on EXPLAIN output
* This is not necessarily an accurate estimate, so use sparingly

File Metadata

Mime Type
text/x-diff
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
6144
Default Alt Text
mw.db-explain-2.diff (3 KB)

Event Timeline