Index: includes/database/query.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/database/query.inc,v
retrieving revision 1.24
diff -u -p -r1.24 query.inc
--- includes/database/query.inc	5 Jun 2009 16:55:45 -0000	1.24
+++ includes/database/query.inc	6 Jun 2009 13:12:36 -0000
@@ -439,7 +439,7 @@ class InsertQuery extends Query {
 
     // Check if a SelectQuery is passed in and use that.
     if (!empty($this->fromQuery)) {
-      return $this->connection->query((string) $this, array(), $this->queryOptions);
+      return $this->connection->query((string)$this, $this->fromQuery->getArguments(), $this->queryOptions);
     }
 
     // Confirm that the user did not try to specify an identical
Index: includes/database/mysql/query.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/database/mysql/query.inc,v
retrieving revision 1.12
diff -u -p -r1.12 query.inc
--- includes/database/mysql/query.inc	5 Jun 2009 16:55:45 -0000	1.12
+++ includes/database/mysql/query.inc	6 Jun 2009 13:12:36 -0000
@@ -41,6 +41,10 @@ class InsertQuery_mysql extends InsertQu
       }
     }
 
+    if (!empty($this->fromQuery)) {
+      $values += $this->fromQuery->getArguments();
+    }
+
     $last_insert_id = $this->connection->query((string)$this, $values, $this->queryOptions);
 
     // Re-initialize the values array so that we can re-use this query.
Index: includes/database/pgsql/query.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/database/pgsql/query.inc,v
retrieving revision 1.13
diff -u -p -r1.13 query.inc
--- includes/database/pgsql/query.inc	5 Jun 2009 16:55:45 -0000	1.13
+++ includes/database/pgsql/query.inc	6 Jun 2009 13:12:36 -0000
@@ -69,7 +69,8 @@ class InsertQuery_pgsql extends InsertQu
     elseif ($options['return'] == Database::RETURN_INSERT_ID) {
       $options['return'] = Database::RETURN_NULL;
     }
-    $last_insert_id = $this->connection->query($stmt, array(), $options);
+    $args = !empty($this->fromQuery->getArguments()) ? $this->fromQuery->getArguments() : array() ;
+    $last_insert_id = $this->connection->query($stmt, $args, $options);
 
     // Re-initialize the values array so that we can re-use this query.
     $this->insertValues = array();
