Index: includes/database.pgsql.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/Attic/database.pgsql.inc,v
retrieving revision 1.68.2.2
diff -u -r1.68.2.2 database.pgsql.inc
--- includes/database.pgsql.inc	8 Jul 2008 09:50:03 -0000	1.68.2.2
+++ includes/database.pgsql.inc	22 Jan 2009 09:43:54 -0000
@@ -775,7 +775,10 @@
  *   The table to be altered.
  */
 function db_drop_primary_key(&$ret, $table) {
-  $ret[] = update_sql('ALTER TABLE {'. $table .'} DROP CONSTRAINT {'. $table .'}_pkey');
+  $name = '{'. $table. '}_pkey';
+  if (_db_index_exists($name)) {
+    $ret[] = update_sql('ALTER TABLE {'. $table .'} DROP CONSTRAINT '.$name);
+  }
 }
 
 /**
@@ -808,7 +811,9 @@
  */
 function db_drop_unique_key(&$ret, $table, $name) {
   $name = '{'. $table .'}_'. $name .'_key';
-  $ret[] = update_sql('ALTER TABLE {'. $table .'} DROP CONSTRAINT '. $name);
+  if (_db_index_exists($name)) {
+    $ret[] = update_sql('ALTER TABLE {'. $table .'} DROP CONSTRAINT '. $name);
+  }
 }
 
 /**
@@ -839,7 +844,16 @@
  */
 function db_drop_index(&$ret, $table, $name) {
   $name = '{'. $table .'}_'. $name .'_idx';
-  $ret[] = update_sql('DROP INDEX '. $name);
+  if (version_compare(db_version(), '8.2') < 0) {
+    $ret[] = update_sql('DROP INDEX IF EXISTS '. $name);
+  }
+  else if (_db_index_exists($name)) {
+    $ret[] = update_sql('DROP INDEX '. $name);
+  }
+}
+
+function _db_index_exists($name) {
+  return db_result(db_query("SELECT COUNT(indexname) FROM pg_indexes WHERE indexname = '$name'"));
 }
 
 /**
