[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