 
 public func ||(p1:Predicate, p2:Predicate) -> Predicate {
     switch (p1, p2) {
+    case (.null, .null):
+        return .null
+    case (.null, let p2):
+        return p2
+    case (let p1, .null):
+        return p1
     case (.bool(let p1), .bool(let p2)):
         return p1 || p2
     case (let p1, .bool(let p2)):

    t1["id"] == t2["id"]
}.map { t1, t2 in
    [t1["firstname"], t2["comment"]]
}/*.filter { t1, t2 in
    t1["firstname"] == "Daniel"
}*/.execute().flatMap{$0}.flatMap { results in
    results.columns.zip(results.all())
}.onSuccess { (cols, rows) in
    print(cols)


public func &&(p1:Predicate, p2:Predicate) -> Predicate {
    switch (p1, p2) {
    case (.null, .null):
        return .null
    case (.null, let p2):
        return p2
    case (let p1, .null):
        return p1
    case (.bool(let p1), .bool(let p2)):
        return p1 && p2
    case (let p1, .bool(let p2)):
