 
 (def- +where-operator-strings+
   {:= "=", :> ">", :>= ">=", :< "<", :<= "<=", :not= "<>"})
+
+(def- +where-nil-operator-strings+
+  {:= "IS", :not= "IS NOT"})
 
 (defn- where-conjunction-sql
   [conjunction]

  [operator]
  (or (+where-operator-strings+ operator)
      (throwf "invalid operator: %s" operator)))

(defn- where-exp-sql
  [model where-exp]

    ; [:foo :> 20]
    :else
      (str "(" (name (where-exp 0)) " "
               (if (nil? (where-exp 2))
                 (where-nil-operator-sql (where-exp 1))
                 (where-operator-sql (where-exp 1))) " "
               (((quoters-by-name model) (where-exp 0)) (where-exp 2)) ")")))

(defn- where-sql
