Fixed no-op update query in common code path
authorTim Starling <tstarling@users.mediawiki.org>
Wed, 19 Mar 2008 11:19:00 +0000 (11:19 +0000)
committerTim Starling <tstarling@users.mediawiki.org>
Wed, 19 Mar 2008 11:19:00 +0000 (11:19 +0000)
includes/Article.php
includes/Database.php

index 33e21ec..2515708 100644 (file)
@@ -3372,31 +3372,35 @@ class Article {
                $insertCats = array_merge( $added, $deleted );
                $insertRows = array();
                foreach( $insertCats as $cat ) {
-                       $insertRows []= array( 'cat_title' => $cat );
+                       $insertRows[] = array( 'cat_title' => $cat );
                }
                $dbw->insert( 'category', $insertRows, __METHOD__, 'IGNORE' );
 
                $addFields    = array( 'cat_pages = cat_pages + 1' );
                $removeFields = array( 'cat_pages = cat_pages - 1' );
                if( $ns == NS_CATEGORY ) {
-                       $addFields    []= 'cat_subcats = cat_subcats + 1';
-                       $removeFields []= 'cat_subcats = cat_subcats - 1';
+                       $addFields[]    = 'cat_subcats = cat_subcats + 1';
+                       $removeFields[] = 'cat_subcats = cat_subcats - 1';
                } elseif( $ns == NS_IMAGE ) {
-                       $addFields    []= 'cat_files = cat_files + 1';
-                       $removeFields []= 'cat_files = cat_files - 1';
+                       $addFields[]    = 'cat_files = cat_files + 1';
+                       $removeFields[] = 'cat_files = cat_files - 1';
                }
 
-               $dbw->update(
-                       'category',
-                       $addFields,
-                       array( 'cat_title' => $added ),
-                       __METHOD__
-               );
-               $dbw->update(
-                       'category',
-                       $removeFields,
-                       array( 'cat_title' => $deleted ),
-                       __METHOD__
-               );
+               if ( $added ) {
+                       $dbw->update(
+                               'category',
+                               $addFields,
+                               array( 'cat_title' => $added ),
+                               __METHOD__
+                       );
+               }
+               if ( $deleted ) {
+                       $dbw->update(
+                               'category',
+                               $removeFields,
+                               array( 'cat_title' => $deleted ),
+                               __METHOD__
+                       );
+               }
        }
 }
index 5863750..e9db0a3 100644 (file)
@@ -1569,8 +1569,7 @@ class Database {
                                $list .= "$value";
                        } elseif ( ($mode == LIST_AND || $mode == LIST_OR) && is_array($value) ) {
                                if( count( $value ) == 0 ) {
-                                       // Empty input... or should this throw an error?
-                                       $list .= '0';
+                                       throw new MWException( __METHOD__.': empty input' );
                                } elseif( count( $value ) == 1 ) {
                                        // Special-case single values, as IN isn't terribly efficient
                                        $list .= $field." = ".$this->addQuotes( $value[0] );