[Jifty-commit] r6470 - Jifty-DBI/branches/tisql/lib/Jifty/DBI
Jifty commits
jifty-commit at lists.jifty.org
Thu Feb 26 06:05:47 EST 2009
Author: ruz
Date: Thu Feb 26 06:05:47 2009
New Revision: 6470
Modified:
Jifty-DBI/branches/tisql/lib/Jifty/DBI/Collection.pm
Jifty-DBI/branches/tisql/lib/Jifty/DBI/Handle.pm
Log:
* get rid of alias_string, we have all we need to build it when we need,
maintainging becomes a problem
Modified: Jifty-DBI/branches/tisql/lib/Jifty/DBI/Collection.pm
==============================================================================
--- Jifty-DBI/branches/tisql/lib/Jifty/DBI/Collection.pm (original)
+++ Jifty-DBI/branches/tisql/lib/Jifty/DBI/Collection.pm Thu Feb 26 06:05:47 2009
@@ -1787,7 +1787,6 @@
table => $table,
type => $type,
( $class ? ( class => $class ) : () ),
- alias_string => " $type JOIN $table $alias ",
depends_on => [],
};
Modified: Jifty-DBI/branches/tisql/lib/Jifty/DBI/Handle.pm
==============================================================================
--- Jifty-DBI/branches/tisql/lib/Jifty/DBI/Handle.pm (original)
+++ Jifty-DBI/branches/tisql/lib/Jifty/DBI/Handle.pm Thu Feb 26 06:05:47 2009
@@ -920,8 +920,9 @@
}
if ( $args{'alias2'} ) {
- if ( $args{'collection'}{'joins'}{ $args{alias2} } and lc $args{'collection'}{'joins'}{ $args{alias2} }{type} eq "cross" ) {
- my $join = $args{'collection'}{'joins'}{ $args{alias2} };
+ my $joins = $args{'collection'}{'joins'};
+ if ( $joins->{ $args{alias2} } and lc $joins->{ $args{alias2} }{type} eq "cross" ) {
+ my $join = $joins->{ $args{alias2} };
$args{'table2'} = $join->{table};
$alias = $join->{alias};
} else {
@@ -930,8 +931,8 @@
@args{qw/alias1 alias2/} = @args{qw/alias2 alias1/};
@args{qw/column1 column2/} = @args{qw/column2 column1/};
- if ( $args{'collection'}{'joins'}{ $args{alias2} } and lc $args{'collection'}{'joins'}{ $args{alias2} }{type} eq "cross" ) {
- my $join = $args{'collection'}{'joins'}{ $args{alias2} };
+ if ( $joins->{ $args{alias2} } and lc $joins->{ $args{alias2} }{type} eq "cross" ) {
+ my $join = $joins->{ $args{alias2} };
$args{'table2'} = $join->{table};
$alias = $join->{alias};
} else {
@@ -955,15 +956,12 @@
}
my $meta = $args{'collection'}->{'joins'}{$alias} ||= {};
- $meta->{alias} = $alias;
+ $meta->{'table'} = $args{'table2'};
+ $meta->{'alias'} = $alias;
if ( $args{'type'} =~ /LEFT/i ) {
- $meta->{'alias_string'}
- = " LEFT JOIN " . $args{'table2'} . " $alias ";
$meta->{'type'} = 'LEFT';
-
} else {
- $meta->{'alias_string'} = " JOIN " . $args{'table2'} . " $alias ";
- $meta->{'type'} = 'CROSS';
+ $meta->{'type'} = 'CROSS';
}
$meta->{'depends_on'} = [ $args{'alias1'} ];
$meta->{'is_distinct'} = $args{'is_distinct'};
@@ -1009,9 +1007,10 @@
if ( ref $alias ) {
$meta = $alias;
my $clause = $self->_explicit_joins( collection => $collection, chain => $alias->{'chain'}, add_main => 0 );
- $meta->{'alias_string'} = " LEFT JOIN ( $clause )";
+ $join_clause .= " LEFT JOIN ( $clause )";
} else {
$meta = $collection->{'joins'}{ $alias };
+ $join_clause .= ' '. CORE::join(' ', $meta->{'type'}, 'JOIN', @{ $meta }{'table', 'alias'} );
}
my $aggregator = $meta->{'entry_aggregator'} || 'AND';
@@ -1027,15 +1026,12 @@
# delete last aggregator
pop @tmp;
- my $on_clause = CORE::join ' ', @tmp;
- my $type = uc $meta->{'type'};
- if ( !$on_clause && $type eq 'CROSS' ) {
- $join_clause .= ' CROSS';
+ if ( @tmp ) {
+ $join_clause =~ s/CROSS //i
+ if $meta->{'type'} eq 'CROSS';
+ $join_clause .= ' ON '. CORE::join ' ', @tmp;
}
- $join_clause .= $meta->{'alias_string'};
-
- $join_clause .= ' ON '. $on_clause if $on_clause;
}
return $join_clause;
@@ -1055,8 +1051,11 @@
my @cross = grep { lc $_->{type} eq "cross" }
values %{ $collection->{'joins'} };
- my $join_clause = ( $collection->table . " main" )
- . CORE::join( " ", map { $_->{alias_string} } @cross );
+ my $join_clause = CORE::join( " ",
+ ($collection->table ." main"),
+ map { ($_->{'type'}, 'JOIN', $_->{'table'}, $_->{'alias'}) }
+ @cross
+ );
foreach my $j ( grep $_->{'criteria'}, @cross ) {
while (my ($k, $v) = each %{ $j->{'criteria'} } ) {
$collection->{restrictions}{ $j->{'alias'} . $k } = $v;
@@ -1080,7 +1079,7 @@
my $meta = $joins->{$join};
my $aggregator = $meta->{'entry_aggregator'} || 'AND';
- $join_clause .= $meta->{'alias_string'} . " ON ";
+ $join_clause .= ' '. CORE::join(' ', $meta->{'type'}, 'JOIN', @{$meta}{'table', 'alias'} ) . " ON ";
my @tmp = map {
ref($_)
? $_->{'column'} . ' '
@@ -1145,7 +1144,6 @@
alias => $join
);
- $joins->{$join}{'alias_string'} =~ s/^\s*LEFT\s+/ /i;
$joins->{$join}{'type'} = 'CROSS';
}
More information about the Jifty-commit
mailing list