From 9fbce194ce73184e7799cfcd2dd9608e07ea41d9 Mon Sep 17 00:00:00 2001
From: Brandon Bergren <bdragon@rtk0.net>
Date: Wed, 2 May 2012 15:50:07 -0500
Subject: [PATCH] Fix #1558340 by bdragon: Cache base table list.

---
 views/entity.views.inc |   15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/views/entity.views.inc b/views/entity.views.inc
index cd359fc..14d068a 100644
--- a/views/entity.views.inc
+++ b/views/entity.views.inc
@@ -309,10 +309,19 @@ function _entity_views_field_identifier($field, array $table) {
  * Implements hook_views_plugins().
  */
 function entity_views_plugins() {
-  foreach (views_fetch_data() as $table => $data) {
-    if (!empty($data['table']['entity type']) && !empty($data['table']['base'])) {
-      $base_tables[] = $table;
+  // Have views cache the table list for us so it gets
+  // cleared at the appropriate times.
+  $data = views_cache_get('entity_base_tables', TRUE);
+  if (!empty($data->data)) {
+    $base_tables = $data->data;
+  }
+  else {
+    foreach (views_fetch_data() as $table => $data) {
+      if (!empty($data['table']['entity type']) && !empty($data['table']['base'])) {
+        $base_tables[] = $table;
+      }
     }
+    views_cache_set('entity_base_tables', $base_tables, TRUE);
   }
   if (!empty($base_tables)) {
     return array(
-- 
1.7.10

