From a3bc10c4ab9bf30adc031f20c4aac38355bd90e4 Mon Sep 17 00:00:00 2001
From: Angie Byron <webchick@24967.no-reply.drupal.org>
Date: Wed, 15 Sep 2010 04:34:27 +0000
Subject: [PATCH] #910190 by sun: Remove schema cache from needlessly being
 loaded on all pages. Performance improvement.

---
 includes/common.inc                                       | 8 ++++++++
 includes/entity.inc                                       | 4 ++--
 .../simpletest/tests/entity_cache_test_dependency.module  | 1 -
 3 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/includes/common.inc b/includes/common.inc
index 03bf4115152a..07422d08ddf7 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -6689,6 +6689,14 @@ function entity_get_info($entity_type = NULL) {
         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 fields SQL info for
+        // DrupalEntityControllerInterface::buildQuery().
+        if (isset($entity_info[$name]['base table'])) {
+          $entity_info[$name]['schema_fields_sql']['base table'] = drupal_schema_fields_sql($entity_info[$name]['base table']);
+          if (isset($entity_info[$name]['revision table'])) {
+            $entity_info[$name]['schema_fields_sql']['revision table'] = drupal_schema_fields_sql($entity_info[$name]['revision table']);
+          }
+        }
       }
       // Let other modules alter the entity info.
       drupal_alter('entity_info', $entity_info);
diff --git a/includes/entity.inc b/includes/entity.inc
index 59473c2768bd..b67a31798468 100644
--- a/includes/entity.inc
+++ b/includes/entity.inc
@@ -251,11 +251,11 @@ protected function buildQuery($ids, $conditions = array(), $revision_id = FALSE)
     }
 
     // Add fields from the {entity} table.
-    $entity_fields = drupal_schema_fields_sql($this->entityInfo['base table']);
+    $entity_fields = $this->entityInfo['schema_fields_sql']['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_fields_sql']['revision table']);
       // The id field is provided by entity, so remove it.
       unset($entity_revision_fields[$this->idKey]);
 
diff --git a/modules/simpletest/tests/entity_cache_test_dependency.module b/modules/simpletest/tests/entity_cache_test_dependency.module
index 19d51cc36883..1f9c1c3ba9b2 100644
--- a/modules/simpletest/tests/entity_cache_test_dependency.module
+++ b/modules/simpletest/tests/entity_cache_test_dependency.module
@@ -13,7 +13,6 @@ function entity_cache_test_dependency_entity_info() {
   return array(
     'entity_cache_test' => array(
       'label' => 'Entity Cache Test',
-      'base table' => 'entity_cache_test',
     ),
   );
 }
-- 
GitLab