Class: SolidObjects::DatabaseAdapters::Sqlite
Constant Summary
collapse
- LOCK_RETRY_INTERVAL =
0.001
Instance Attribute Summary
#connection_pool, #fixed_connection
Instance Method Summary
collapse
#claim_lock, #configure_transaction_deadline, #database_now, for, #initialize, #lock_candidates, #supports_skip_locked?, #with_connection
Instance Method Details
#current_time_expression ⇒ String
9
10
11
|
# File 'lib/solid_objects/database_adapters/sqlite.rb', line 9
def current_time_expression
"STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')"
end
|
#deadline_error?(error) ⇒ Boolean
39
40
41
42
43
44
45
46
47
48
49
|
# File 'lib/solid_objects/database_adapters/sqlite.rb', line 39
def deadline_error?(error)
return false unless SyncDeadline.active?
cause = error
while cause
return true if cause.class.name.match?(/BusyException|BusyError/)
cause = cause.cause
end
false
end
|
#transaction { ... } ⇒ Object
#with_transaction_deadline(connection) { ... } ⇒ Object
28
29
30
31
32
33
34
35
36
|
# File 'lib/solid_objects/database_adapters/sqlite.rb', line 28
def with_transaction_deadline(connection)
return yield unless SyncDeadline.active?
previous_timeout = connection.select_value("PRAGMA busy_timeout").to_i
connection.execute("PRAGMA busy_timeout = 0")
yield
ensure
connection.execute("PRAGMA busy_timeout = #{previous_timeout}") if previous_timeout
end
|