luckyframework/avram

Support for CURSOR

Open

#1,008 opened on Mar 6, 2024

View on GitHub
 (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