handle /NOT/foo/OR/bar
[id3fs.git] / lib / ID3FS / Path / Node.pm
index 950be17..478adb3 100644 (file)
@@ -134,6 +134,15 @@ sub to_sql
 #              print("LEFT: ", $left->print(), "\n") if ($left);
 #              print("RIGHT: ", $right->print(), "\n") if($right);
            }
+           elsif($op eq "OR")
+           {
+               # if left child is a not, we need an extra (inner) join
+               if($left && $left->name() && $left->name() eq "NOT")
+               {
+                   push(@joins, "INNER");
+                   push(@outjoins, "INNER");
+               }
+           }
        }
        my ($rightstr, @rightjoins) = $right->to_sql($hasvals, $not, @joins) if($right);
        push(@outjoins, @rightjoins);
@@ -147,6 +156,8 @@ sub to_sql
            $str="(" . $str . ")";
        }
 #      print "STR: $str\n";
+#      my @all=(@joins, @rightjoins);
+#      print "JOINS: RETURN ", scalar(@outjoins), " ALL ", scalar(@all), "\n";
        return($str, @outjoins);
     }
 }