Class: SolidObjects::DatabaseAdapters::Postgresql
- Inherits:
-
SolidObjects::DatabaseAdapter
- Object
- SolidObjects::DatabaseAdapter
- SolidObjects::DatabaseAdapters::Postgresql
- Defined in:
- lib/solid_objects/database_adapters/postgresql.rb,
sig/generated/lib/solid_objects/database_adapters/postgresql.rbs
Instance Attribute Summary
Attributes inherited from SolidObjects::DatabaseAdapter
#connection_pool, #fixed_connection
Instance Method Summary collapse
- #claim_lock ⇒ String
- #configure_transaction_deadline(connection) ⇒ void
- #deadline_error?(error) ⇒ Boolean
- #supports_skip_locked? ⇒ Boolean
Methods inherited from SolidObjects::DatabaseAdapter
#current_time_expression, #database_now, for, #initialize, #lock_candidates, #transaction, #with_connection, #with_lock_probe, #with_lock_retry, #with_transaction_deadline
Constructor Details
This class inherits a constructor from SolidObjects::DatabaseAdapter
Instance Method Details
#claim_lock ⇒ String
12 13 14 |
# File 'lib/solid_objects/database_adapters/postgresql.rb', line 12 def claim_lock "FOR UPDATE SKIP LOCKED" end |
#configure_transaction_deadline(connection) ⇒ void
This method returns an undefined value.
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/solid_objects/database_adapters/postgresql.rb', line 19 def configure_transaction_deadline(connection) return unless SyncDeadline.active? connection.execute( "SET LOCAL lock_timeout = #{SyncDeadline.remaining_milliseconds}" ) connection.execute( "SET LOCAL statement_timeout = #{SyncDeadline.remaining_milliseconds}" ) end |
#deadline_error?(error) ⇒ Boolean
31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/solid_objects/database_adapters/postgresql.rb', line 31 def deadline_error?(error) return false unless SyncDeadline.active? return true if error.is_a?(ActiveRecord::LockWaitTimeout) cause = error while cause result = cause.respond_to?(:result) ? cause.result : nil return true if result&.error_field(PG::Result::PG_DIAG_SQLSTATE) == "57014" cause = cause.cause end false end |
#supports_skip_locked? ⇒ Boolean
7 8 9 |
# File 'lib/solid_objects/database_adapters/postgresql.rb', line 7 def supports_skip_locked? true end |