Index: feedapi.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/feedapi/feedapi.install,v
retrieving revision 1.5.2.21.2.16
diff -u -p -r1.5.2.21.2.16 feedapi.install
--- feedapi.install	9 Jun 2009 08:07:54 -0000	1.5.2.21.2.16
+++ feedapi.install	9 Jun 2009 08:17:50 -0000
@@ -54,9 +54,9 @@ function feedapi_schema() {
         'type' => 'int',
         'size' => 'tiny'),
     ),
-    'primary key' => array('vid'),
+    'primary key' => array('vid', 'nid'),
     'indexes' => array(
-      'nid' => array('nid'),
+      'vid' => array('vid'),
       'next_refresh_time' => array('next_refresh_time')),
   );
   $schema['feedapi_stat'] = array(
@@ -176,20 +176,27 @@ function feedapi_update_6104() {
  * Adds vid to feedapi table
  */
 function feedapi_update_6105() {
+  global $db_type;
   $ret = array();
   db_add_field($ret, 'feedapi', 'vid',
     array(
       'description' => 'The primary identifier for the feed.',
       'type' => 'int',
       'unsigned' => TRUE,
-      'not null' => TRUE
+      'not null' => TRUE,
+      'default' => 0,
     )
   );
   db_drop_primary_key($ret, 'feedapi');
-  db_query("UPDATE {feedapi} f, node n SET f.vid = n.vid WHERE n.nid = f.nid");
-  db_query("UPDATE {feedapi} SET vid = nid WHERE vid = 0");
-  db_add_primary_key($ret, 'feedapi', array('vid'));
-  db_add_index($ret, 'feedapi', 'nid', array('nid'));
+  if ($db_type == 'mysql' || $db_type == 'mysqli') {
+    $ret[] = update_sql("UPDATE {feedapi} f, node n SET f.vid = n.vid WHERE n.nid = f.nid");
+  }
+  else {
+    $ret[] = update_sql("UPDATE {feedapi} SET vid = n.vid FROM (SELECT vid, nid FROM node n) n WHERE n.nid = feedapi.nid");
+  }
+  $ret[] = update_sql("UPDATE {feedapi} SET vid = nid WHERE vid = 0");
+  db_add_primary_key($ret, 'feedapi', array('vid', 'nid'));
+  db_add_index($ret, 'feedapi', 'vid', array('vid'));
   return $ret;
 }
 
