[svn:p5ee] r10852 - p5ee/trunk/App-Repository/lib/App

[email protected] Thu, 28 Feb 2008 15:37:23 -0800 (PST)
Newsgroups perl.cvs.p5ee
Message-ID <[email protected]>
Author: spadkins
Date: Thu Feb 28 15:37:23 2008
New Revision: 10852

Modified:
   p5ee/trunk/App-Repository/lib/App/Repository.pm

Log:
get caching to work with extend_columns

Modified: p5ee/trunk/App-Repository/lib/App/Repository.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/Repository.pm	(original)
+++ p5ee/trunk/App-Repository/lib/App/Repository.pm	Thu Feb 28 15:37:23 2008
@@ -659,7 +659,20 @@
             }
             $hashkey = $sds->hashkey([$table, $params, $cols, $hash_options, "row"]);
             if (!$options->{cache_refresh}) {
-                $row = $sds->get_ref($hashkey);
+                my $ref = $sds->get_ref($hashkey);
+                if (defined $ref) {
+                    my ($saved_table, $saved_params, $saved_columns, $saved_row, $saved_options) = @$ref;
+                    $row = $saved_row;
+                    if ($options->{extend_columns}) {
+                        @$cols = @$saved_columns;  # so copy the columns
+                    }
+                    else {
+                        $cols = $saved_columns
+                    }
+                }
+                else {
+                    $row = undef;
+                }
             }
         }
 
@@ -694,7 +707,7 @@
             }
 
             if ($sds) {
-                $sds->set_ref($hashkey, $row);
+                $sds->set_ref($hashkey, [$table, $params, $cols, $row, $options]);
             }
         }
         if ($sds && $tabledef->{cache_minimum_columns} && $row) {
@@ -939,9 +952,22 @@
                 delete $hash_options->{cache_refresh};
                 $hash_options = undef if (! %$hash_options);
             }
-            $hashkey = $sds->hashkey([$table, $params, $cols, $hash_options, "row"]);
+            $hashkey = $sds->hashkey([$table, $params, $cols, $hash_options, "rows"]);
             if (!$options->{cache_refresh}) {
-                $rows = $sds->get_ref($hashkey);
+                my $ref = $sds->get_ref($hashkey);
+                if (defined $ref) {
+                    my ($saved_table, $saved_params, $saved_columns, $saved_rows, $saved_options) = @$ref;
+                    $rows = $saved_rows;
+                    if ($options->{extend_columns}) {
+                        @$cols = @$saved_columns;  # so copy the columns
+                    }
+                    else {
+                        $cols = $saved_columns
+                    }
+                }
+                else {
+                    $rows = undef;
+                }
             }
         }
 
@@ -982,7 +1008,7 @@
             }
 
             if ($sds) {
-                $sds->set_ref($hashkey, $rows);
+                $sds->set_ref($hashkey, [$table, $params, $cols, $rows, $options]);
             }
         }
         if ($sds && $tabledef->{cache_minimum_columns}) {