[racket] db library and cursors
On 07/25/2012 06:13 PM, Neil Van Dyke wrote:
> Any thoughts on whether the "db" library will support cursors? Or
> thoughts on handling large query results in the "db" library?
>
> Reason I ask: I'm experimentally reimplementing an older PostgreSQL
> library to use the Racket "db" library. Some applications using this
> library use cursors for large query results. In the Racket 5.2.1 source
> code, it looks like even "in-query" sucks all the query result rows into
> a non-lazy list. I can make a "cursor" object that simply wraps a
> non-lazy list of results, but this could be a problem for large query
> results.
Basic cursor support has been in db for a couple months (and will be in
5.3). There's no cursor object per se. Instead, if you call 'in-query'
with a finite value for the #:fetch argument, it fetches only that many
rows at a time. See
http://pre.racket-lang.org/docs/html/db/query-api.html#%28def._%28%28lib._db/base..rkt%29._in-query%29%29
PostrgreSQL also has a SQL-level cursor interface, if you need the
additional operations. See the DECLARE CURSOR statement.
Ryan