PEAR is archived and read-only

This mirror preserves historical PEAR package releases and metadata so existing references remain available.

Home » Database » MDB2_Driver_pgsql » Bug #9081

MDB2 pgsql dropDatabase issue

Details

Submitted2006-10-18 15:01 UTC
Fromale dot pas at tiscali dot it
Assignedquipo
StatusClosed
PackageMDB2_Driver_pgsql
PHP Version5.1.4
OSlinux
Roadmaps(Not assigned)

Comments

[2006-10-18 15:01 UTC] ale dot pas at tiscali dot it

Description:
------------
A call to dropDatabase() returns MDB2_Ok but the database is not dropped.

Test script:
---------------
$mdb2->loadModule('Manager');
$this->assertFalse(PEAR::isError($mdb2));
$this->assertTrue(in_array($new_db_name, $mdb2->listDatabases()));
// Drop DB
$this->assertTrue(MDB2_OK == $mdb2->dropDatabase($new_db_name));
$this->assertFalse(in_array($new_db_name, $mdb2->listDatabases()));

Expected result:
----------------
The last instruction should return false but returns true (the DB is still in the list reported by listDatabases().

DB user permission are Ok and the DB is really still there.

[2006-10-19 09:00 UTC] ale dot pas at tiscali dot it

This code fails at random (once every 2-5 run)
---------------------------------
require_once 'MDB2.php';

$mdb2 =&
MDB2::connect('pgsql://***:***@localhost:5432/template1');
$mdb2->loadModule('Manager');
var_dump($mdb2->listDatabases());
$mdb2->dropDatabase('test_geodb');
var_dump($mdb2->listDatabases());
var_dump($mdb2->createDatabase('test_geodb'));

--------------------------------------

This code always works:
--------------------------------------
$dbconn = pg_connect("host=localhost dbname=template1
user=*** password=***")
or die('Could not connect: ' . pg_last_error());

$query = 'select datname from pg_database';
$result = pg_query($query) or die('Query failed: ' .
pg_last_error());
while($row = pg_fetch_row($result)){
$dblist[] = $row[0];
}

var_dump(db_list());

if(in_array('test_geodb', db_list())){
$query = 'DROP DATABASE test_geodb';
$result = pg_query($query) or die('Query failed: ' .
pg_last_error());
}

var_dump(db_list());

$query = 'CREATE DATABASE test_geodb';
$result = pg_query($query) or die('Query failed: ' .
pg_last_error());

pg_close($dbconn);

function db_list(){
$query = 'select datname from pg_database';
$result = pg_query($query) or die('Query failed: ' .
pg_last_error());
while($row = pg_fetch_row($result)){
$dblist[] = $row[0];
}
return $dblist;
}