From 9acc1985917e931881e6b71fe2bd337a02f9a934 Mon Sep 17 00:00:00 2001 From: Sean Corfield Date: Thu, 20 Aug 2020 11:59:07 -0700 Subject: [PATCH] Treat null ResultSetMetaData as having no columns --- CHANGELOG.md | 3 +++ src/next/jdbc/result_set.clj | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac4bbdf..136f197 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ Only accretive/fixative changes will be made from now on. +Changes made on **develop** since the 1.1.582 release: +* If `ResultSet.getMetaData()` returns `null`, we assume the column count is zero, i.e., an empty result set. + ## Stable Builds * 2020-08-05 -- 1.1.582 diff --git a/src/next/jdbc/result_set.clj b/src/next/jdbc/result_set.clj index 8c41ae2..84c8969 100644 --- a/src/next/jdbc/result_set.clj +++ b/src/next/jdbc/result_set.clj @@ -40,13 +40,13 @@ (if-let [q (not-empty (.getTableName rsmeta i))] (keyword q (.getColumnLabel rsmeta i)) (keyword (.getColumnLabel rsmeta i)))) - (range 1 (inc (.getColumnCount rsmeta))))) + (range 1 (inc (try (.getColumnCount rsmeta) (catch Throwable _ 0)))))) (defn get-unqualified-column-names "Given `ResultSetMetaData`, return a vector of unqualified column names." [^ResultSetMetaData rsmeta _] (mapv (fn [^Integer i] (keyword (.getColumnLabel rsmeta i))) - (range 1 (inc (.getColumnCount rsmeta))))) + (range 1 (inc (try (.getColumnCount rsmeta) (catch Throwable _ 0)))))) (defn get-modified-column-names "Given `ResultSetMetaData`, return a vector of modified column names, each @@ -62,7 +62,7 @@ (if-let [q (some-> (.getTableName rsmeta i) (qf) (not-empty))] (keyword q (-> (.getColumnLabel rsmeta i) (lf))) (keyword (-> (.getColumnLabel rsmeta i) (lf))))) - (range 1 (inc (.getColumnCount rsmeta)))))) + (range 1 (inc (try (.getColumnCount rsmeta) (catch Throwable _ 0))))))) (defn get-unqualified-modified-column-names "Given `ResultSetMetaData`, return a vector of unqualified modified column @@ -73,7 +73,7 @@ (let [lf (:label-fn opts)] (assert lf ":label-fn is required") (mapv (fn [^Integer i] (keyword (lf (.getColumnLabel rsmeta i)))) - (range 1 (inc (.getColumnCount rsmeta)))))) + (range 1 (inc (try (.getColumnCount rsmeta) (catch Throwable _ 0))))))) (defn- lower-case "Converts a string to lower case in the US locale to avoid problems in