    (d/chain
     (session/execute
      session
-     (update-statement table key record opts)
+     (update-statement
+      table
+      key
+      record
+      (select-keys opts [:only-if :if-exists :using :set-columns]))
      (dissoc opts :only-if :if-exists :using :set-columns))
     first)))
 

   (d/chain
    (session/execute
     session
     (delete-statement table key record-or-key-value opts)
     (dissoc opts :only-if :if-exists :using :where))
    first)))

   (let [strm (session/execute-buffered
               session
               (select-statement
                table
                key
                record-or-key-value
                (select-keys opts [:columns :where :only-if :order-by :limit]))
               (-> opts
                   (dissoc :columns :where :only-if :order-by :limit :buffer-size)))]
     (if buffer-size
       (s/buffer buffer-size strm)
       strm))))
