projects
/
freeside.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
cfebba4
)
cache virtual_fields method results to help performance
author
ivan
<ivan>
Sun, 21 Dec 2003 23:13:41 +0000
(23:13 +0000)
committer
ivan
<ivan>
Sun, 21 Dec 2003 23:13:41 +0000
(23:13 +0000)
FS/FS/Record.pm
patch
|
blob
|
history
diff --git
a/FS/FS/Record.pm
b/FS/FS/Record.pm
index
14dfca2
..
2517d18
100644
(file)
--- a/
FS/FS/Record.pm
+++ b/
FS/FS/Record.pm
@@
-2,7
+2,7
@@
package FS::Record;
use strict;
use vars qw( $dbdef_file $dbdef $setup_hack $AUTOLOAD @ISA @EXPORT_OK $DEBUG
use strict;
use vars qw( $dbdef_file $dbdef $setup_hack $AUTOLOAD @ISA @EXPORT_OK $DEBUG
- $me %dbdef_cache );
+ $me %dbdef_cache
%virtual_fields_cache
);
use subs qw(reload_dbdef);
use Exporter;
use Carp qw(carp cluck croak confess);
use subs qw(reload_dbdef);
use Exporter;
use Carp qw(carp cluck croak confess);
@@
-1379,14
+1379,17
@@
sub virtual_fields {
return () unless $self->dbdef->table('part_virtual_field');
return () unless $self->dbdef->table('part_virtual_field');
- # This should be smart enough to cache results.
+ unless ( $virtual_fields_cache{$table} ) {
+ my $query = 'SELECT name from part_virtual_field ' .
+ "WHERE dbtable = '$table'";
+ my $dbh = dbh;
+ my $result = $dbh->selectcol_arrayref($query);
+ confess $dbh->errstr if $dbh->err;
+ $virtual_fields_cache{$table} = $result;
+ }
+
+ @{$virtual_fields_cache{$table}};
- my $query = 'SELECT name from part_virtual_field ' .
- "WHERE dbtable = '$table'";
- my $dbh = dbh;
- my $result = $dbh->selectcol_arrayref($query);
- confess $dbh->errstr if $dbh->err;
- return @$result;
}
}