       #_sql-string     11 (.getString    result-set column-index)
       #_sql-time       12 (.getTime      result-set column-index)
       #_sql-timestamp  13 (.getTimestamp result-set column-index)
-      (unexpected (str "either of " (pr-str supported-sql-types)) column-type))))
+      (unexpected supported-sql-types column-type))))
 
 
 (defn read-result-row

      #_sql-string     11 (.setString    prepared-statement param-index ^String param-value)
      #_sql-time       12 (.setTime      prepared-statement param-index ^java.sql.Time param-value)
      #_sql-timestamp  13 (.setTimestamp prepared-statement param-index ^java.sql.Timestamp param-value)
      (unexpected (str "either of " (pr-str supported-sql-types)) param-type))))


(defn set-params!

  ^SQLTemplate [sql param-pairs result-column-types]
  (when-not (string? sql)
    (unexpected "SQL string" sql))
  (->SQLTemplate sql (object-array param-pairs) (int-array result-column-types)))


;; ----- SQL parsing helpers -----


(def encode-name keyword)


(defn encode-type
  [^String token ^String sql]
  (let [k (keyword token)]
    (when-not (contains? sql-type-map k)
      (unexpected (str supported-sql-types " in SQL string: " sql) token))
    (get sql-type-map k)))


(defn valid-type-char?
