java.jdbc

The age of reduce is upon us

Details

  • Type: Enhancement Enhancement
  • Status: Open Open
  • Priority: Major Major
  • Resolution: Unresolved
  • Affects Version/s: None
  • Fix Version/s: None
  • Component/s: None
  • Labels:
    None

Description

jdbc code is pretty heavily in to resource management, you have connections, result sets, prepared statements all of which require lifetime management.

clojure.java.jdbc is built around result-set-seqs, sequences of results. but lazy-sequences provide no good way to manage the lifetime of resources behind the sequences.

clojure provides a mechanism to define a collection in terms of reduce and a growing collection of ways to manipulate and transform reducible collections.

a collection that knows how to reduce itself has a means of managing the lifetime of associated resources, the lifetime of the reduce operation.

so it seems clear that result-set-seqs should be replaced with result-set-reducibles.

Activity

Hide
Ghadi Shayban added a comment -

Something like this would be amenable to reduce/transduce. Used in conjunction with db-query-with-resultset
https://gist.github.com/ghadishayban/d2f31961deba98ee4595

Half of the knobs on jdbc/query are to control seq realization, but instead should defer to reduce/reduced

i.e.
(into [] (take 5000) (queryr "select * from foo"))

The reducible collection returned should be one-shot, cleaning up resources, and it would be an error to run more than once

Show
Ghadi Shayban added a comment - Something like this would be amenable to reduce/transduce. Used in conjunction with db-query-with-resultset https://gist.github.com/ghadishayban/d2f31961deba98ee4595 Half of the knobs on jdbc/query are to control seq realization, but instead should defer to reduce/reduced i.e. (into [] (take 5000) (queryr "select * from foo")) The reducible collection returned should be one-shot, cleaning up resources, and it would be an error to run more than once

People

Vote (1)
Watch (1)

Dates

  • Created:
    Updated: