     {:keys [row-generator] :as opts}]
    (session/execute
     session
-    (select-statement table key record-or-key-value opts)
-    (assoc-when
-     {}
-     :row-generator row-generator))))
+    (select-statement table key record-or-key-value
+                      (dissoc opts :columns :where :only-if :order-by :limit))
+    opts)))
 
 (defn select-buffered
   "select records"

   (select-one session table key record-or-key-value {}))

  ([^Session session table key record-or-key-value opts]
   (d/chain (select session table key record-or-key-value (merge opts {:limit 1}))
            first)))

(defn insert-statement
  "returns a Hayt insert statement"

   (d/chain
    (session/execute
     session
     (insert-statement table record opts)
     (dissoc opts :if-not-exists :using))
    first)))

(defn update-statement
