             has-rs (.execute stmt sql)]
         (if (empty? sqls)
           (if has-rs
-            (read-rs (.getResultSet stmt) 100)
+            (read-rs (.getResultSet stmt))
             (.getUpdateCount stmt)
             )
           (recur (first sqls) (rest sqls)))

       {:error (.getMessage e#)}))
  )

(defn ^:private read-rs
  ([rs & {:keys [offset limit columns] :or {offset 0 limit 100}}]
   (let [rs-meta (.getMetaData rs)
         col-size (inc (.getColumnCount rs-meta))
         cols (if (columns) columns (doall (map #(.getColumnName rs-meta %) (range 1 col-size))))]
     (if (and (> offset 0) (= ResultSet/TYPE_SCROLL_INSENSITIVE (.getType rs)))
       (.absolute rs offset)
       )
     (loop [rows [] count 0]
       (if (and (.next rs) (< count limit))
         (let [row (doall (map #(.getObject rs %) (range 1 col-size)))]
           (recur (conj rows row) (inc count))
           )
         {:columns cols :rows rows}
         )
       )
     ))
  ([rs] (read-rs rs (Integer/MAX_VALUE)))
  ([rs cols limit]
   (loop [rows [] count 0]
     (if (and (.next rs) (< count limit))
       (let [row (doall (map #(.getObject rs %) cols))]
         (recur (conj rows row) (inc count))
         )
       {:columns cols :rows rows}
       )
     )
   )
  )

(defn mk-ds [{:keys [dbms url user_name password]}]

          where (if (empty? predicates) "" (str "where " (s/join " AND " predicates)))
          sql (str "select " (s/join "," fields) "from " (s/join "," tables) where)
          rs (.executeQuery stmt sql)]
      (read-rs rs :limit limit :offset offset)
      )))
