tidy to_sql()
authorIan Beckwith <ianb@erislabs.net>
Tue, 12 Oct 2010 05:05:57 +0000 (06:05 +0100)
committerIan Beckwith <ianb@erislabs.net>
Tue, 12 Oct 2010 05:05:57 +0000 (06:05 +0100)
lib/ID3FS/Path.pm
lib/ID3FS/Path/Node.pm

index d3a99a4..ea22065 100644 (file)
@@ -723,8 +723,6 @@ sub tags_subselect
     }
     my ($sqlclause, @joins)=(undef, ());
     ($sqlclause, @joins) = $tree->to_sql($tag) if($tree);
-    @joins=("INNER") unless(@joins);
-    print "JOINS: ", scalar(@joins), "\n";
 #    print "SQL(" . scalar(@joins) .": $sqlclause\n";
     my $sql="\tSELECT fxt1.files_id FROM tags t1";
     my @crosses=();
index 87b1b6e..11e2de3 100644 (file)
@@ -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);
 }