+ # if we are ANDing, add an inner join
+ # also if we are NOTing, but we are looking for a tag *value*
+ if( ($op eq "AND") || ($hasvals && ($op eq "NOT")))
+ {
+ # hack - if right child is a NOT, we don't need extra join/brackets
+ # NOT will do the same and we will end up with an extra one
+ unless($right && $right->name() && $right->name() eq "NOT")
+ {
+ push(@joins, "INNER");
+ push(@outjoins, "INNER");
+ }
+ }
+ elsif($op eq "NOT")
+ {
+ $not=1;
+ push(@joins, "LEFT");
+ push(@outjoins, "LEFT");
+# print("LEFT: ", $left->print(), "\n") if ($left);
+# print("RIGHT: ", $right->print(), "\n") if($right);
+ }