Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (jdbc/atomic conn
- (with-open [cursor (jdbc/fetch-lazy conn [sql_query])]
- (let [lazyseq (jdbc/cursor->lazyseq cursor)
- counter (atom 1)]
- (swap! lazyseq_maps assoc :session_id {:get_next? (chan 1) :over_500 (chan 1) :data []})
- (>!! (:get_next? (:session_id @lazyseq_maps)) true)
- (go
- (doseq [row lazyseq]
- (swap! counter inc)
- (when (<! (:get_next? (:session_id @lazyseq_maps)))
- (swap! lazyseq_maps update-in [:session_id :data] conj row)
- (if (not= 0 (mod @counter 500))
- (>! (:get_next? (:session_id @lazyseq_maps)) true)
- (>! (:over_500 (:session_id @lazyseq_maps)) true))))
- ;
- (close! (:get_next? (:session_id @lazyseq_maps)))
- (close! (:over_500 (:session_id @lazyseq_maps)))
- (.close conn))
- (when (<!! (:over_500 (:session_id @lazyseq_maps))) {:message "over 500 rows"
- :id :session_id
- :data (:data (:session_id @lazyseq_maps))}))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement