luckyframework/avram

Support for CURSOR

Open

#1,008 opened on Mar 6, 2024

 (0 comments) (0 reactions) (0 assignees)Crystal (67 forks)auto 404
feature requesthacktoberfest

Repository metrics

Stars
 (180 stars)
PR merge metrics
 (PR metrics pending)

Description

A CURSOR would allow us to paginate really large collections.

I've never implemented or even really used these directly, but I found this example

-- We must be in a transaction
BEGIN;
-- Open a cursor for a query
DECLARE medley_cur CURSOR FOR SELECT * FROM medley;
-- Retrieve ten rows
FETCH 10 FROM medley_cur;
-- ...
-- Retrieve ten more from where we left off
FETCH 10 FROM medley_cur;
-- All done
COMMIT;

I honestly have no clue how this will work, but I think we would probably want some alternate method of iterating that appends the cursor to the query?

UserQuery.new.each_with_cursor(fetch: 10) do |user|
  #??
end

UserQuery.new.cursor_fetch(10).each do |user|

end

If anyone has any ideas around this, I'm open.

Contributor guide