[rt-commit] [svn] r632 - in DBIx-SearchBuilder/trunk: . SearchBuilder SearchBuilder/Record

jesse at fsck.com jesse at fsck.com
Sun Mar 28 07:33:46 EST 2004


Author: jesse
Date: Sun Mar 28 07:33:45 2004
New Revision: 632

Modified:
   DBIx-SearchBuilder/trunk/   (props changed)
   DBIx-SearchBuilder/trunk/Changes
   DBIx-SearchBuilder/trunk/META.yml
   DBIx-SearchBuilder/trunk/SearchBuilder.pm
   DBIx-SearchBuilder/trunk/SearchBuilder/Handle.pm
   DBIx-SearchBuilder/trunk/SearchBuilder/Record/Cachable.pm
Log:

0.98_04 - New mysql/oracle "Join" code that allows more complex bundling of 
	  joins from Linda and Robert

Minor cleanup to unify two identical loops in the record cache expiry routine.

Releasing 0.99

Modified: DBIx-SearchBuilder/trunk/Changes
==============================================================================
--- DBIx-SearchBuilder/trunk/Changes	(original)
+++ DBIx-SearchBuilder/trunk/Changes	Sun Mar 28 07:33:45 2004
@@ -1,5 +1,10 @@
 Revision history for Perl extension DBIx::SearchBuilder.
 
+0.99	- Bundled changes from 0.98* and released production version
+
+0.98_04 - New mysql/oracle "Join" code that allows more complex bundling of 
+	  joins from Linda and Robert
+
 0.98_03 - New test infrastructure from Andy Lester
 
 0.98_02 - Better handling of != clauses on Postgres

Modified: DBIx-SearchBuilder/trunk/META.yml
==============================================================================
--- DBIx-SearchBuilder/trunk/META.yml	(original)
+++ DBIx-SearchBuilder/trunk/META.yml	Sun Mar 28 07:33:45 2004
@@ -2,13 +2,12 @@
 version: 0.97
 license: unknown
 distribution_type: module
+build_requires:
+  Test::More: 0
 requires:
   DBI: 0
   Class::ReturnValue: 0.4
 no_index:
   directory:
     - inc
-private:
-  directory:
-    - inc
-generated_by: Module::Install version 0.27
+generated_by: Module::Install version 0.33

Modified: DBIx-SearchBuilder/trunk/SearchBuilder.pm
==============================================================================
--- DBIx-SearchBuilder/trunk/SearchBuilder.pm	(original)
+++ DBIx-SearchBuilder/trunk/SearchBuilder.pm	Sun Mar 28 07:33:45 2004
@@ -5,7 +5,7 @@
 use strict;
 use vars qw($VERSION);
 
-$VERSION = "0.98_03";
+$VERSION = "0.99";
 
 =head1 NAME
 
@@ -70,7 +70,6 @@
     $self->{'tables'}           = "";
     $self->{'auxillary_tables'} = "";
     $self->{'where_clause'}     = "";
-    $self->{'table_links'}      = "";
     $self->{'limit_clause'}     = "";
     $self->{'order'}            = "";
     $self->{'alias_count'}      = 0;
@@ -108,7 +107,7 @@
     # The initial SELECT or SELECT DISTINCT is decided later
 
     $QueryString = $self->_BuildJoins . " ";
-    $QueryString .= $self->_WhereClause . " " . $self->{'table_links'} . " "
+    $QueryString .= $self->_WhereClause . " "
       if ( $self->_isLimited > 0 );
 
     # DISTINCT query only required for multi-table selects
@@ -206,7 +205,7 @@
 
     $QueryString .= $self->_BuildJoins . " ";
 
-    $QueryString .= $self->_WhereClause . " " . $self->{'table_links'} . " "
+    $QueryString .= $self->_WhereClause . " "
       if ( $self->_isLimited > 0 );
 
 
@@ -878,7 +877,6 @@
     #Go through all restriction types. Build the where clause from the
     #Various subclauses.
     foreach $subclause ( keys %{ $self->{'subclauses'} } ) {
-
         # Now, build up the where clause
         if ( defined($where_clause) ) {
             $where_clause .= " AND ";
@@ -890,7 +888,9 @@
     }
 
     $where_clause = " WHERE " . $where_clause if ( $where_clause ne '' );
+
     return ($where_clause);
+
 }
 
 # }}}
@@ -1088,22 +1088,21 @@
 
 sub Join {
     my $self = shift;
-    my %args = ( TYPE   => 'normal',
-                 FIELD1 => undef, ALIAS1 => undef,
-                 TABLE2 => undef, FIELD2 => undef, ALIAS2 => undef,
-                 @_ );
-
-    $self->_Handle->Join(SearchBuilder => $self, %args);
-
+    my %args = (
+        TYPE   => 'normal',
+        FIELD1 => undef,
+        ALIAS1 => undef,
+        TABLE2 => undef,
+        FIELD2 => undef,
+        ALIAS2 => undef,
+        @_
+    );
 
+    $self->_Handle->Join( SearchBuilder => $self, %args );
 
 }
 
 # }}}
-
-# things we'll want to add:
-# get aliases
-# add restirction clause
 
 # }}}
 

Modified: DBIx-SearchBuilder/trunk/SearchBuilder/Handle.pm
==============================================================================
--- DBIx-SearchBuilder/trunk/SearchBuilder/Handle.pm	(original)
+++ DBIx-SearchBuilder/trunk/SearchBuilder/Handle.pm	Sun Mar 28 07:33:45 2004
@@ -86,7 +86,7 @@
     "INSERT INTO $table (". join(", ", @cols). ") VALUES ".
     "(". join(", ", @vals). ")";
     warn $QueryString if $DEBUG;
-    
+
     my $sth =  $self->SimpleQuery($QueryString, @bind);
     return ($sth);
   }
@@ -381,7 +381,6 @@
     my $QueryString = shift;
     my @bind_values = (@_);
 
- 
     my $sth = $self->dbh->prepare($QueryString);
     unless ($sth) {
 	if ($DEBUG) {
@@ -398,6 +397,7 @@
 	    return ($ret->return_value);
 	}
     }
+
     # Check @bind_values for HASH refs 
     for (my $bind_idx = 0; $bind_idx < scalar @bind_values; $bind_idx++) {
         if (ref($bind_values[$bind_idx]) eq "HASH") {
@@ -709,7 +709,10 @@
 
 =head2 Join { Paramhash }
 
-Takes a paramhash of everything Searchbuildler::Record does + a parameter called 'SearchBuilder that contains a ref to a SearchBuilder object'.
+Takes a paramhash of everything Searchbuildler::Record does 
+plus a parameter called 'SearchBuilder' that contains a ref 
+to a SearchBuilder object'.
+
 This performs the join.
 
 
@@ -720,34 +723,40 @@
 
     my $self = shift;
     my %args = (
-                SearchBuilder => undef,
-                 TYPE   => 'normal',
-                 FIELD1 => undef, ALIAS1 => undef,
-                 TABLE2 => undef, FIELD2 => undef, ALIAS2 => undef,
-                 @_ );
+        SearchBuilder => undef,
+        TYPE          => 'normal',
+        FIELD1        => undef,
+        ALIAS1        => undef,
+        TABLE2        => undef,
+        FIELD2        => undef,
+        ALIAS2        => undef,
+        @_
+    );
 
+    my $sb = $args{'SearchBuilder'};
 
 
     if ( $args{'TYPE'} =~ /LEFT/i ) {
-        my $alias = $args{'SearchBuilder'}->_GetAlias( $args{'TABLE2'} );
+        my $alias = $sb->_GetAlias( $args{'TABLE2'} );
 
-        $args{'SearchBuilder'}->{'left_joins'}{"$alias"}{'alias_string'} =
+        $sb->{'left_joins'}{"$alias"}{'alias_string'} =
           " LEFT JOIN $args{'TABLE2'} as $alias ";
 
-        $args{'SearchBuilder'}->{'left_joins'}{"$alias"}{'criteria'}{'base_criterion'} =
+        $sb->{'left_joins'}{"$alias"}{'criteria'}{'base_criterion'} =
           " $args{'ALIAS1'}.$args{'FIELD1'} = $alias.$args{'FIELD2'}";
 
         return ($alias);
     }
-
-    # we need to build the table of links.
-    my $clause =
-      $args{'ALIAS1'} . "."
-      . $args{'FIELD1'} . " = "
-      . $args{'ALIAS2'} . "."
-      . $args{'FIELD2'};
-    $args{'SearchBuilder'}->{'table_links'} .= " AND $clause ";
-
+    else {
+    $sb->DBIx::SearchBuilder::Limit(
+          ENTRYAGGREGATOR => 'AND',
+          QUOTEVALUE      => 0,
+          ALIAS           => $args{'ALIAS1'},
+          FIELD           => $args{'FIELD1'},
+          VALUE           => $args{'ALIAS2'} . "." . $args{'FIELD2'},
+          @_
+    ); 
+    }
 }
 
 # }}}

Modified: DBIx-SearchBuilder/trunk/SearchBuilder/Record/Cachable.pm
==============================================================================
--- DBIx-SearchBuilder/trunk/SearchBuilder/Record/Cachable.pm	(original)
+++ DBIx-SearchBuilder/trunk/SearchBuilder/Record/Cachable.pm	Sun Mar 28 07:33:45 2004
@@ -166,13 +166,10 @@
   my ($this) = @_; 
 
 
-  my $time = time(); 
-  foreach my $cache_key (keys %{$this->_KeyCache}) {
-    my $cache_time = $this->_RecordCache->{$cache_key}{'time'} || 0;  
-    $this->_expire($cache_key) 
-      if (($time - $cache_time) > $this->{'_CacheConfig'}{'cache_for_sec'});
-  }
-  foreach my $cache_key (keys %{$this->_RecordCache}) {
+  my $time = time();  
+
+  # XXX TODO: do we want to sort the keys beforehand, so we can get out of the loop earlier?
+  foreach my $cache_key (keys %{$this->_KeyCache}, keys %{$this->_RecordCache}) {
     my $cache_time = $this->_RecordCache->{$cache_key}{'time'} || 0 ;  
     $this->_expire($cache_key) 
       if (($time - $cache_time) > $this->{'_CacheConfig'}{'cache_for_sec'});
@@ -206,10 +203,8 @@
 sub _fetch () { 
   my ($this, $cache_key) = @_;
 
-  $this->{'values'}  = 
-    $this->_RecordCache->{$cache_key}{'values'};
-  $this->{'fetched'}  = 
-    $this->_RecordCache->{$cache_key}{'fetched'};
+  $this->{'values'}  = $this->_RecordCache->{$cache_key}{'values'};
+  $this->{'fetched'}  = $this->_RecordCache->{$cache_key}{'fetched'};
   return(1); 
 }
 



More information about the Rt-commit mailing list