how to time out a query

Hi,

I've got an activerecord query which takes longer than 100 seconds. I'm using rails 2.2 with postgresql 8.3.

mentions an option called "statement_timeout" which when set aborts a query which takes longer than x milli seconds.

How do I pass this option to AR so that it in turn passes this to postgresql?

cheers, skar.

You've probably already figured it out, but this looks workable:

  # See this page for some of the statement-related settings:   # PostgreSQL: Documentation: 8.3: Client Connection Defaults   def setStatementTimeout milliseconds     query = "SET statement_timeout = #{milliseconds};"     ActiveRecord::Base.connection().execute query   end

Another alternative would be to just wrap your long-running query in a timeout, something like:

require 'timeout' ... begin   status = Timeout::timeout(60) do     # some long-running action ....   end rescue Timeout::Error => te   # .... end

Jeff

This will result in the query continuing to run on the database though, thus consuming resources, which may not be something you want.

Sincerely, Anthony Eden