? sites/default/files
? sites/default/settings.php
Index: includes/common.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/common.inc,v
retrieving revision 1.965
diff -u -p -r1.965 common.inc
--- includes/common.inc	21 Aug 2009 07:50:07 -0000	1.965
+++ includes/common.inc	21 Aug 2009 09:09:06 -0000
@@ -4546,12 +4546,12 @@ function drupal_schema_fields_sql($table
   if ($prefix) {
     $columns = array();
     foreach ($fields as $field) {
-      $columns[] = "$prefix.$field";
+      $columns["$prefix.$field"] = "$prefix.$field";
     }
     return $columns;
   }
   else {
-    return $fields;
+    return drupal_map_assoc($fields);
   }
 }
 
Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.1103
diff -u -p -r1.1103 node.module
--- modules/node/node.module	21 Aug 2009 07:59:47 -0000	1.1103
+++ modules/node/node.module	21 Aug 2009 09:09:06 -0000
@@ -810,6 +810,10 @@ function node_load_multiple($nids = arra
     // nid is provided by node, so remove it.
     unset($node_revision_fields['nid']);
 
+    // Change revision uid to revision_uid.
+    unset($node_revision_fields['uid']);
+    $query->addField('r', 'uid', 'revision_uid');
+
     // Change timestamp to revision_timestamp before adding it to the query.
     unset($node_revision_fields['timestamp']);
     $query->addField('r', 'timestamp', 'revision_timestamp');
Index: modules/node/node.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.test,v
retrieving revision 1.38
diff -u -p -r1.38 node.test
--- modules/node/node.test	28 Jul 2009 19:18:06 -0000	1.38
+++ modules/node/node.test	21 Aug 2009 09:09:06 -0000
@@ -218,6 +218,25 @@ class PageEditTestCase extends DrupalWeb
     // Check that the title and body fields are displayed with the updated values.
     $this->assertText($edit['title'], t('Title displayed.'));
     $this->assertText($edit[$body_key], t('Body displayed.'));
+
+    // Login as a second administrator user.
+    $second_web_user = $this->drupalCreateUser(array('administer nodes', 'edit any page content'));
+    $this->drupalLogin($second_web_user);
+    // Edit the same node, creating a new revision.
+    $this->drupalGet("node/$node->nid/edit");
+    $edit = array();
+    $edit['title'] = $this->randomName(8);
+    $edit[$body_key] = $this->randomName(16);
+    $edit['revision'] = TRUE;
+    $this->drupalPost(NULL, $edit, t('Save'));
+
+    // Load the revised node and verify vid, uid and revision_uid properties.
+    $revised_node = $this->drupalGetNodeByTitle($edit['title']);
+    $this->assertNotIdentical($node->vid, $revised_node->vid, 'A new revision has been created.');
+    $this->assertIdentical($node->uid, $revised_node->uid, 'The node author has been preserved.');
+    $first_node_version = node_load($node->nid, $node->vid);
+    $second_node_version = node_load($node->nid, $revised_node->vid);
+    $this->assertNotIdentical($first_node_version->revision_uid, $second_node_version->revision_uid, 'Each revision has a distinct user.');
   }
 }
 
