:multi-rs truthy defaults to sequnce; :delimited available #116

This commit is contained in:
Sean Corfield 2020-06-06 14:38:09 -07:00
parent ec31aaa427
commit 326977dddc
2 changed files with 15 additions and 8 deletions

View file

@ -699,8 +699,8 @@
(first sql-params) (first sql-params)
(rest sql-params) (rest sql-params)
opts)] opts)]
(if (:multi-rs opts) (if-let [multi (:multi-rs opts)]
(loop [go (.execute stmt) acc nil rsn 0] (loop [go (.execute stmt) acc (if (= :delimited multi) nil []) rsn 0]
(let [rs (if-let [rs (stmt->result-set' stmt go opts)] (let [rs (if-let [rs (stmt->result-set' stmt go opts)]
(datafiable-result-set rs this opts) (datafiable-result-set rs this opts)
(let [n (.getUpdateCount stmt)] (let [n (.getUpdateCount stmt)]
@ -710,11 +710,14 @@
(if-not rs (if-not rs
acc acc
(recur (.getMoreResults stmt) (recur (.getMoreResults stmt)
(if acc (cond (not= :delimited multi)
(-> acc (conj acc rs)
(conj {:next.jdbc/result-set rsn}) acc
(into rs)) (-> acc
rs) (conj {:next.jdbc/result-set rsn})
(into rs))
:else
rs)
(inc rsn))))) (inc rsn)))))
(if-let [rs (stmt->result-set stmt opts)] (if-let [rs (stmt->result-set stmt opts)]
(datafiable-result-set rs this opts) (datafiable-result-set rs this opts)

View file

@ -315,10 +315,14 @@ VALUES ('Pear', 'green', 49, 47)
(when (stored-proc?) (when (stored-proc?)
(testing "stored proc; multiple result sets" (testing "stored proc; multiple result sets"
(try (try
(println "====" (:dbtype (db)) "====") (println "====" (:dbtype (db)) "==== true")
(clojure.pprint/pprint (clojure.pprint/pprint
(jdbc/execute! (ds) [(if (mssql?) "EXEC FRUITP" "CALL FRUITP()")] (jdbc/execute! (ds) [(if (mssql?) "EXEC FRUITP" "CALL FRUITP()")]
{:multi-rs true})) {:multi-rs true}))
(println "====" (:dbtype (db)) "==== :delimited")
(clojure.pprint/pprint
(jdbc/execute! (ds) [(if (mssql?) "EXEC FRUITP" "CALL FRUITP()")]
{:multi-rs :delimited}))
(catch Throwable t (catch Throwable t
(println 'call-proc (:dbtype (db)) (ex-message t) (some-> t (ex-cause) (ex-message)))))))) (println 'call-proc (:dbtype (db)) (ex-message t) (some-> t (ex-cause) (ex-message))))))))