(bug 33304) Fix ApiQueryAllPages duplicate rows in protection query
authorBrad Jorsch <bjorsch@wikimedia.org>
Wed, 30 Jan 2013 01:32:26 +0000 (20:32 -0500)
committerReedy <reedy@wikimedia.org>
Wed, 6 Mar 2013 03:44:07 +0000 (03:44 +0000)
When querying for protection expiry without also querying protection
type(s), DISTINCT is not added to the query. Fix that.

Change-Id: I47d3ac1e0cfa6fa1fb0dc0089f5a01698b334cd5

RELEASE-NOTES-1.21
includes/api/ApiQueryAllPages.php

index 4f38f3a..303e0b0 100644 (file)
@@ -251,6 +251,8 @@ production.
   an error during parameter validation if the parameter is given but not
   recognized as an uploaded file.
 * (bug 44244) prop=info may now return the number of people watching each page.
+* (bug 33304) list=allpages will no longer return duplicate entries when
+  querying protection.
 
 === API internal changes in 1.21 ===
 * For debugging only, a new global $wgDebugAPI removes many API restrictions when true.
index 0c6692a..1667a85 100644 (file)
@@ -135,8 +135,6 @@ class ApiQueryAllPages extends ApiQueryGeneratorBase {
                                } elseif ( $params['prfiltercascade'] == 'noncascading' ) {
                                        $this->addWhereFld( 'pr_cascade', 0 );
                                }
-
-                               $this->addOption( 'DISTINCT' );
                        }
                        $forceNameTitleIndex = false;
 
@@ -146,6 +144,8 @@ class ApiQueryAllPages extends ApiQueryGeneratorBase {
                                $this->addWhere( "pr_expiry != {$db->addQuotes( $db->getInfinity() )}" );
                        }
 
+                       $this->addOption( 'DISTINCT' );
+
                } elseif ( isset( $params['prlevel'] ) ) {
                        $this->dieUsage( 'prlevel may not be used without prtype', 'params' );
                }