Sha256: 4d14600a514b8dfb25cc43c46d2b688078fd9389a49fa1a21d791931be26dcd3

Contents?: true

Size: 837 Bytes

Versions: 48

Compression:

Stored size: 837 Bytes

Contents

module Sequel
  module StatementTimeout
    def with_statement_timeout(timeout_seconds = 20)
      # Might not have postgres class loaded, use class name
      if self.class.name == "Sequel::Postgres::Database"
        # Don't want to use a transaction because this will often be a read and a transaction is unnecessary.
        # Also, when using it for clean, want to control the transactions outside this.
        current_statement_timeout = execute("show statement_timeout") { |r| r.first.values.first }
        run("SET statement_timeout = '#{timeout_seconds}s'")
        begin
          yield
        ensure
          run("SET statement_timeout = '#{current_statement_timeout}'")
        end
      else
        yield
      end
    end
  end

  Database.register_extension(:statement_timeout){|db| db.extend(StatementTimeout) }
end

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
pact_broker-2.114.0 lib/sequel/extensions/statement_timeout.rb
pact_broker-2.113.2 lib/sequel/extensions/statement_timeout.rb
pact_broker-2.113.1 lib/sequel/extensions/statement_timeout.rb
pact_broker-2.113.0 lib/sequel/extensions/statement_timeout.rb
pact_broker-2.112.0 lib/sequel/extensions/statement_timeout.rb
pact_broker-2.111.0 lib/sequel/extensions/statement_timeout.rb
pact_broker-2.109.1 lib/sequel/extensions/statement_timeout.rb
pact_broker-2.109.0 lib/sequel/extensions/statement_timeout.rb
pact_broker-2.108.0 lib/sequel/extensions/statement_timeout.rb
pact_broker-2.107.1 lib/sequel/extensions/statement_timeout.rb
pact_broker-2.107.0 lib/sequel/extensions/statement_timeout.rb
pact_broker-2.107.0.beta.1 lib/sequel/extensions/statement_timeout.rb
pact_broker-2.106.0 lib/sequel/extensions/statement_timeout.rb
pact_broker-2.105.0 lib/sequel/extensions/statement_timeout.rb
pact_broker-2.104.0 lib/sequel/extensions/statement_timeout.rb
pact_broker-2.103.0 lib/sequel/extensions/statement_timeout.rb
pact_broker-2.102.2 lib/sequel/extensions/statement_timeout.rb
pact_broker-2.102.1 lib/sequel/extensions/statement_timeout.rb
pact_broker-2.102.0 lib/sequel/extensions/statement_timeout.rb
pact_broker-2.101.0 lib/sequel/extensions/statement_timeout.rb