     return .comparison(op: .eq, a: MetaValue<Any>.column(column1), b: MetaValue<Any>.column(column2))
 }
 
-public func ==<T>(value:T?, column:Column) -> Predicate {
+public func ==<T : RDBCEquatable>(value:T?, column:Column) -> Predicate {
     return .comparison(op: .eq, a: value.map {MetaValue.static($0)}, b: MetaValue<Any>.column(column))
 }
 

    return .comparison(op: .neq, a: MetaValue<Any>.column(column1), b: MetaValue<Any>.column(column2))
}

public func !=<T>(value:T?, column:Column) -> Predicate {
    return .comparison(op: .neq, a: value.map {MetaValue.static($0)}, b: MetaValue<Any>.column(column))
}


    case eq
    case neq
    case like
    
    case gt
    case lt
    case gte
    case lte
}

public indirect enum Predicate {
