def root_tables(self):
    if util.all_of([self.left.op(), self.right.op()], (Join, Selection)):
        return [self.left.op(), self.right.op()]
    else:
        return distinct_roots(self.left, self.right)
def root_tables(self):
    if util.all_of([self.left.op(), self.right.op()], (Join, Selection)):
        return [self.left.op(), self.right.op()]
    else:
        return distinct_roots(self.left, self.right)