[Jifty-commit] r5056 - Jifty-DBI/branches/tisql/lib/Jifty/DBI

Jifty commits jifty-commit at lists.jifty.org
Wed Feb 6 10:34:48 EST 2008


Author: ruz
Date: Wed Feb  6 10:34:44 2008
New Revision: 5056

Modified:
   Jifty-DBI/branches/tisql/lib/Jifty/DBI/Tisql.pm

Log:
* "FROM .gm.grp as g1 WHERE g1.name = 'X' OR g1.name 'Y'" really
  uses one join now

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	Wed Feb  6 10:34:44 2008
@@ -4,6 +4,7 @@
 use warnings;
 
 use base qw(Parse::BooleanLogic);
+use Scalar::Util qw(refaddr blessed);
 
 use Regexp::Common qw(delimited);
 my $re_delim  = qr{$RE{delimited}{-delim=>qq{\'\"}}};
@@ -107,7 +108,18 @@
     my $last_column = pop @chain;
     my $last_alias = 'main';
 
+    my %aliases;
+
     foreach my $column ( @chain ) {
+        unless ( blessed $column ) {
+            if ( my $tmp = $aliases{ refaddr $column } ) {
+                ($last_alias, $last_column) = @$tmp;
+            } else {
+                ($last_alias, $last_column) = $self->resolve_join( @$column );
+            }
+            next;
+        }
+
         my $name = $column->name;
 
         my $classname = $column->refers_to;
@@ -184,9 +196,9 @@
     unless ( $start_from ) {
         $item = $self->{'collection'}->new_item;
     } else {
-        $item = $aliases->{ $start_from }->[-1]->refers_to->new( handle => $self->{'collection'}->_handle ) || die "$start_from alias is not defined";
-        push @res, @{ $aliases->{ $start_from } };
-        use Data::Dumper; print Dumper($item);
+        my $alias = $aliases->{ $start_from } || die "$start_from alias is not defined";
+        $item = $alias->[-1]->refers_to->new( handle => $self->{'collection'}->_handle );
+        push @res, $alias;
     }
     while ( my $name = shift @names ) {
         my $column = $item->column( $name );


More information about the Jifty-commit mailing list