[postgres] Is there a way to avoid having the library slurp-read the whole result-set?

Thanks!

Never knew you could do it that way. That's of great help. :slight_smile:

Thanks again,
Helge Elvik

···

-----Original Message-----
From: Lugovoi Nikolai [mailto:meadow.nnick@gmail.com]
Sent: 4. august 2006 13:16
To: ruby-talk ML
Subject: Re: [postgres] Is there a way to avoid having the library
slurp-read the whole result-set?

2006/8/4, Helge Elvik <helge.elvik@gispartner.no>:

I've looked for things like that, but it doesn't seem like they've

been

exposed in the Ruby API. If I try to make a DBI prepared statement, it
will just slurp-read the first time I call execute on it. The native
PostgreSQL-extension doesn't seem to have any classes for cursors or
prepared statements, and neither does the pure Ruby version.

Hm, I wonder why would you need special API for that?
PGconn.exec should be sufficient:

require 'postgres'
c = PGconn.new
c.exec("BEGIN")
c.exec("DECLARE my_curs CURSOR FOR SELECT * FROM
generate_series(1,20000)")
while (rs = c.exec("FETCH FORWARD 1000 FROM my_curs")) &&
rs.num_tuples > 0
    rs.each { |r| print r[0], "," }
    rs.close
end
c.exec("CLOSE my_curs")
c.exec("COMMIT")

Does anyone know if ActiveRecord might be a solution? Does it have

it's

own implementation of a PostgreSQL connector?

ActiveRecord just uses ruby-postgres or postgres-pr libs