Fix for r89821, r89839: we can skip certain tests if the web user is the same as...
authorTim Starling <tstarling@users.mediawiki.org>
Fri, 10 Jun 2011 22:33:16 +0000 (22:33 +0000)
committerTim Starling <tstarling@users.mediawiki.org>
Fri, 10 Jun 2011 22:33:16 +0000 (22:33 +0000)
includes/installer/PostgresInstaller.php

index a47c172..fec928e 100644 (file)
@@ -276,13 +276,17 @@ class PostgresInstaller extends DatabaseInstaller {
 
                $same = $this->getVar( 'wgDBuser' ) === $this->getVar( '_InstallUser' );
 
-               // Check if the web user exists
-               // Connect to the database with the install user
-               $status = $this->getPgConnection( 'create-db' );
-               if ( !$status->isOK() ) {
-                       return $status;
+               if ( $same ) {
+                       $exists = true;
+               } else {
+                       // Check if the web user exists
+                       // Connect to the database with the install user
+                       $status = $this->getPgConnection( 'create-db' );
+                       if ( !$status->isOK() ) {
+                               return $status;
+                       }
+                       $exists = $status->value->roleExists( $this->getVar( 'wgDBuser' ) );
                }
-               $exists = $status->value->roleExists( $this->getVar( 'wgDBuser' ) );
 
                // Validate the create checkbox
                if ( $this->canCreateAccounts() && !$same && !$exists ) {
@@ -317,7 +321,7 @@ class PostgresInstaller extends DatabaseInstaller {
                // The web user is conventionally the table owner in PostgreSQL 
                // installations. Make sure the install user is able to create 
                // objects on behalf of the web user.
-               if ( $this->canCreateObjectsForWebUser() ) {
+               if ( $same || $this->canCreateObjectsForWebUser() ) {
                        return Status::newGood();
                } else {
                        return Status::newFatal( 'config-pg-not-in-role' );