Index: includes/common.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/common.inc,v
retrieving revision 1.1219
diff -u -p -r1.1219 common.inc
--- includes/common.inc	13 Sep 2010 06:44:58 -0000	1.1219
+++ includes/common.inc	13 Sep 2010 17:01:02 -0000
@@ -6674,6 +6674,7 @@ function entity_get_info($entity_type = 
           'view modes' => array(),
           'entity keys' => array(),
           'translation' => array(),
+          'schema' => array(),
         );
         $entity_info[$name]['entity keys'] += array(
           'revision' => '',
@@ -6689,6 +6690,11 @@ function entity_get_info($entity_type = 
         if (empty($entity_info[$name]['entity keys']['bundle']) && empty($entity_info[$name]['bundles'])) {
           $entity_info[$name]['bundles'] = array($name => array('label' => $entity_info[$name]['label']));
         }
+        // Prepare entity schema info for buildQuery().
+        $entity_info[$name]['schema']['base table'] = drupal_schema_fields_sql($entity_info[$name]['base table']);
+        if (!empty($entity_info[$name]['revision table'])) {
+          $entity_info[$name]['schema']['revision table'] = drupal_schema_fields_sql($entity_info[$name]['revision table']);
+        }
       }
       // Let other modules alter the entity info.
       drupal_alter('entity_info', $entity_info);
Index: includes/entity.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/entity.inc,v
retrieving revision 1.13
diff -u -p -r1.13 entity.inc
--- includes/entity.inc	22 Aug 2010 16:11:12 -0000	1.13
+++ includes/entity.inc	13 Sep 2010 17:04:02 -0000
@@ -251,11 +251,11 @@ class DrupalDefaultEntityController impl
     }
 
     // Add fields from the {entity} table.
-    $entity_fields = drupal_schema_fields_sql($this->entityInfo['base table']);
+    $entity_fields = $this->entityInfo['schema']['base table'];
 
     if ($this->revisionKey) {
       // Add all fields from the {entity_revision} table.
-      $entity_revision_fields = drupal_map_assoc(drupal_schema_fields_sql($this->revisionTable));
+      $entity_revision_fields = drupal_map_assoc($this->entityInfo['schema']['revision table']);
       // The id field is provided by entity, so remove it.
       unset($entity_revision_fields[$this->idKey]);
 
