digital-fabric / extralite

Ruby on SQLite
http://www.rubydoc.info/gems/extralite
MIT License
247 stars 7 forks source link

add db.interrupt support for long running queries #12

Closed sitano closed 1 year ago

sitano commented 1 year ago

add db.interrupt support for long-running queries

t = Thread.new do
  sleep 0.5
  @db.interrupt
end

n = 2**31
# Extralite::Error: Invalid return code for sqlite3_step: 9
assert_raises(Extralite::Error) {
  @db.query <<-SQL
    WITH RECURSIVE
      fibo (curr, next)
    AS
    ( SELECT 1,1
      UNION ALL
      SELECT next, curr+next FROM fibo
      LIMIT #{n} )
    SELECT curr, next FROM fibo LIMIT 1 OFFSET #{n}-1;
  SQL
}
t.join