[Jifty-commit] r5684 - Jifty-DBI/branches/tisql/lib/Jifty/DBI
Jifty commits
jifty-commit at lists.jifty.org
Tue Aug 12 02:43:16 EDT 2008
Author: ruz
Date: Tue Aug 12 02:43:16 2008
New Revision: 5684
Modified:
Jifty-DBI/branches/tisql/lib/Jifty/DBI/Tisql.pm
Log:
* move merge_join code, it may be broken
Modified: Jifty-DBI/branches/tisql/lib/Jifty/DBI/Tisql.pm
==============================================================================
--- Jifty-DBI/branches/tisql/lib/Jifty/DBI/Tisql.pm (original)
+++ Jifty-DBI/branches/tisql/lib/Jifty/DBI/Tisql.pm Tue Aug 12 02:43:16 2008
@@ -108,52 +108,6 @@
$collection->close_paren('tisql');
}
-{
-my %cache;
-my $i = 0;
-my $aliases;
-my $merge_joins_cb = sub {
- my $meta = shift;
- my @parts = split /\./, $meta->{'string'};
- while ( @parts > 2 ) {
- my $new_str = join '.', splice @parts, 0, 2;
- my $m = $cache{ $new_str };
- unless ( $m ) {
- my $name = 'a'. ++$i;
- $name = "a". ++$i while exists $aliases->{ $name };
- $m = {
- name => $name,
- string => $new_str,
- chain => [ $meta->{'chain'}[0] ],
- previous => $meta->{'previous'},
- };
- $cache{ $new_str } = $aliases->{ $name } = $m;
- }
- shift @{ $meta->{'chain'} };
- unshift @parts, $m->{'name'};
- $meta->{'previous'} = $m;
- $meta->{'string'} = join '.', @parts;
- }
-};
-
-sub merge_joins {
- my $self = shift;
- my $tree = shift;
- %cache = ();
- $aliases = $tree->{'aliases'};
-
- $merge_joins_cb->( $_ ) foreach values %$aliases;
- $self->apply_callback_to_tree(
- $tree->{'conditions'},
- sub {
- my $condition = shift;
- $merge_joins_cb->( $_ ) foreach
- grep ref $_, map $condition->{$_}, qw(lhs rhs);
- }
- );
-}
-}
-
sub resolve_join {
my $self = shift;
my $meta = shift;
@@ -382,4 +336,50 @@
return $tree;
}
+{
+my %cache;
+my $i = 0;
+my $aliases;
+my $merge_joins_cb = sub {
+ my $meta = shift;
+ my @parts = split /\./, $meta->{'string'};
+ while ( @parts > 2 ) {
+ my $new_str = join '.', splice @parts, 0, 2;
+ my $m = $cache{ $new_str };
+ unless ( $m ) {
+ my $name = 'a'. ++$i;
+ $name = "a". ++$i while exists $aliases->{ $name };
+ $m = {
+ name => $name,
+ string => $new_str,
+ chain => [ $meta->{'chain'}[0] ],
+ previous => $meta->{'previous'},
+ };
+ $cache{ $new_str } = $aliases->{ $name } = $m;
+ }
+ shift @{ $meta->{'chain'} };
+ unshift @parts, $m->{'name'};
+ $meta->{'previous'} = $m;
+ $meta->{'string'} = join '.', @parts;
+ }
+};
+
+sub merge_joins {
+ my $self = shift;
+ my $tree = shift;
+ %cache = ();
+ $aliases = $tree->{'aliases'};
+
+ $merge_joins_cb->( $_ ) foreach values %$aliases;
+ $self->apply_callback_to_tree(
+ $tree->{'conditions'},
+ sub {
+ my $condition = shift;
+ $merge_joins_cb->( $_ ) foreach
+ grep ref $_, map $condition->{$_}, qw(lhs rhs);
+ }
+ );
+}
+}
+
1;
More information about the Jifty-commit
mailing list