Index: views.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/views/views.module,v
retrieving revision 1.166.2.45
diff -u -p -r1.166.2.45 views.module
--- views.module	12 Jan 2008 18:35:02 -0000	1.166.2.45
+++ views.module	21 Apr 2008 02:33:35 -0000
@@ -179,7 +179,10 @@ function views_menu_admin_items(&$items,
  * overly intensive.
  */
 function views_get_all_urls() {
-  $cache = cache_get("views_urls", 'cache_views');
+  static $cache;
+  if (!isset($cache)) {
+    $cache = cache_get("views_urls", 'cache_views');
+  }
   if ($cache == 0) {
     $views = array();
     $used = array();
@@ -565,11 +568,13 @@ function views_build_view($type, &$view,
   }
 
   $query = db_rewrite_sql($info['query'], 'node');
+  $query = str_replace('[SUBQUERY]', $info['subquery'], $query);
 
   $items = array();
   if ($query) {
     if ($view->use_pager) {
       $cquery = db_rewrite_sql($info['countquery'], 'node', 'nid', $info['rewrite_args']);
+      $cquery = str_replace('[SUBQUERY]', $info['subquery'], $cquery);
       $result = pager_query($query, $view->pager_limit, $view->use_pager - 1, $cquery, $info['args']);
       $view->total_rows = $GLOBALS['pager_total_items'][$view->use_pager - 1];
     }
@@ -704,6 +709,20 @@ function _views_get_timezone() {
   return $timezone;
 }
 
+/*
+ * Determine whether or not the database supports sub-queries.
+ */
+function _views_is_subquery() {
+  switch ($GLOBALS['db_type']) {
+    case 'mysql':
+    case 'mysqli':
+      return version_compare(mysql_get_server_info(), '4.1', '>=');
+
+    case 'pgsql':
+      return TRUE;
+  }
+}
+
 /**
  * Figure out what the URL of the view we're currently looking at is.
  */
@@ -910,15 +929,21 @@ function views_load_view($arg) {
  */
 function _views_load_view($arg) {
   static $cache = array();
+  static $cache_null = array();
+  
   $which = is_numeric($arg) ? 'vid' : 'name';
   if (isset($cache[$which][$arg])) {
     return $cache[$which][$arg];
   }
+  if (isset($cache_null[$which][$arg])) {
+    return NULL;
+  }
 
   $where = (is_numeric($arg) ? "v.vid =  %d" : "v.name = '%s'");
   $view = db_fetch_object(db_query("SELECT v.* FROM {view_view} v WHERE $where", $arg));
 
   if (!$view->name) {
+    $cache_null[$which][$arg] = TRUE;
     return NULL;
   }
 
@@ -2144,4 +2169,4 @@ function views_form_alter($form_id, &$fo
 // An implementation of hook_devel_caches() from devel.module. Must be in views.module so it always is included.
 function views_devel_caches() {
   return array('cache_views');
-}
\ No newline at end of file
+}
