   (emacsql-with-vars ""
     (cl-etypecase idents
       (symbol (var idents :identifier))
-      (vector (mapconcat (lambda (e) (combine (emacsql--expr e)))
-                         idents ", ")))))
+      (vector (mapconcat (lambda (e) (expr e)) idents ", ")))))
 
 (defun emacsql-init-font-lock ()
   "Add font-lock highlighting for `emacsql-defexpander'."

(defvar emacsql--vars ()
  "For use with `emacsql-with-vars'.")

(defun emacsql-symbol-function (symbol)
  "Like `symbol-function' but don't return an error."
  (ignore-errors (symbol-function symbol)))

(gv-define-setter emacsql-symbol-function (store symbol)
  `(if ,store (fset ,symbol ,store) (fmakunbound ,symbol)))

(defun emacsql--vars-var (thing kind)
  "Only use within `emacsql-with-vars'!"
  (if (emacsql-var thing)

    string))

(defmacro emacsql-with-vars (prefix &rest body)
  "Evaluate BODY, collecting variables with `var', `combine', `expr', `idents'.
BODY should return a string, which will be combined with variable
definitions for return from a `emacsql-defexpander'."
  (declare (indent 1))
  `(let ((emacsql--vars ()))
     (cl-flet* ((var (thing kind) (emacsql--vars-var thing kind))
                (combine (expanded) (emacsql--vars-combine expanded))
                (expr (thing) (combine (emacsql--expr thing)))
                (idents (thing) (combine (emacsql--idents thing))))
       (cons (concat ,prefix (progn ,@body)) emacsql--vars))))

(defun emacsql--vector (vector)
  "Expand VECTOR, making variables as needed."
