X-Git-Url: https://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2FID3FS%2FPath%2FNode.pm;h=11e2de35ef4590c1058c8b9de2fd19b77304aada;hb=dfa48c6258f1e0db4b1b17719c2ad84065335b90;hp=87b1b6e8c81e3983dce126167407c17b3be02644;hpb=b2f0890522f6172d809b9f74d18346b77372f3d0;p=id3fs.git diff --git a/lib/ID3FS/Path/Node.pm b/lib/ID3FS/Path/Node.pm index 87b1b6e..11e2de3 100644 --- a/lib/ID3FS/Path/Node.pm +++ b/lib/ID3FS/Path/Node.pm @@ -58,41 +58,37 @@ sub print_node sub to_sql { - my($self, $parent, @injoins)=@_; - my @childjoins=@injoins; + my($self, $parent, @joins)=@_; my @outjoins=(); # init - unless(@injoins) + unless(@joins) { - print "\nSTART\n"; - @outjoins = @childjoins = ("INNER"); + @outjoins = @joins = ("INNER"); } - print "OUT: ", join(', ', @outjoins), "\n"; - print "CLD: ", join(', ', @childjoins), "\n"; - my (@leftjoins, @rightjoins); - my ($leftstr, $rightstr); - my $op=$self->op(); my $left=$self->left(); my $right=$self->right(); return ("", @outjoins) unless($left || $right); - ($leftstr, @leftjoins) = $self->node_to_sql($left, $parent, @childjoins); -# $andlevel=$self->max($andlevel, $leftandlevel); + my ($leftstr, @leftjoins) = $self->node_to_sql($left, $parent, @joins); + push(@joins, @leftjoins); + push(@outjoins, @leftjoins); + my $op=$self->op(); if(defined($op)) { if($op->{name} eq "AND") { - push(@childjoins, "INNER"); + push(@joins, "INNER"); push(@outjoins, "INNER"); } elsif($op->{name} eq "NOT") { - push(@childjoins, "LEFT"); + push(@joins, "LEFT"); push(@outjoins, "LEFT"); } } - ($rightstr, @rightjoins) = $self->node_to_sql($right, $parent, @leftjoins, @childjoins); - print "LEFT (", scalar(@leftjoins), "): $leftstr\n"; - print "RIGHT (", scalar(@rightjoins), "): $rightstr\n"; + my ($rightstr, @rightjoins) = $self->node_to_sql($right, $parent, @joins); + push(@outjoins, @rightjoins); +# print "LEFT (", scalar(@leftjoins), "): $leftstr\n"; +# print "RIGHT (", scalar(@rightjoins), "): $rightstr\n"; my $str=$leftstr; $str .= (" " . $op->{name} . " ") if($op); $str .= $rightstr; @@ -100,16 +96,7 @@ sub to_sql { $str="(" . $str . ")"; } - print "STR: $str\n"; -# return($str, $self->max($leftandlevel, $rightandlevel)); - my @oldout=@outjoins; - @outjoins = (@leftjoins, @outjoins, @rightjoins); - if($op) - { - print "ME (", (defined($op) ? $op->{name} : ""), "): "; - print(scalar(@outjoins), " = " , scalar(@leftjoins), " + ", scalar(@oldout), - " + ", scalar(@rightjoins), "\n"); - } +# print "STR: $str\n"; return($str, @outjoins); }