method
exec_cache
Ruby on Rails latest stable (v7.1.3.2)
-
0 notes -
Class: ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0
- 3.0.9
- 3.1.0 (0)
- 3.2.1 (0)
- 3.2.8 (0)
- 3.2.13 (0)
- 4.0.2 (0)
- 4.1.8 (0)
- 4.2.1 (0)
- 4.2.7 (0)
- 4.2.9 (0)
- 5.0.0.1 (0)
- 5.1.7 (0)
- 5.2.3 (0)
- 6.0.0 (0)
- 6.1.3.1 (0)
- 6.1.7.7 (0)
- 7.0.0 (0)
- 7.1.3.2 (0)
- 7.1.3.4 (0)
- What's this?
exec_cache(sql, name, binds, async:, allow_retry:, materialize_transactions:)
private
Hide source
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 901 def exec_cache(sql, name, binds, async,, allow_retry,, materialize_transactions)) mark_transaction_written_if_write(sql) update_typemap_for_default_timezone with_raw_connection do |conn| stmt_key = prepare_statement(sql, binds, conn) type_casted_binds = type_casted_binds(binds) log(sql, name, binds, type_casted_binds, stmt_key, async: async) do result = conn.exec_prepared(stmt_key, type_casted_binds) verified! result end end rescue ActiveRecord::StatementInvalid => e raise unless is_cached_plan_failure?(e) # Nothing we can do if we are in a transaction because all commands # will raise InFailedSQLTransaction if in_transaction? raise ActiveRecord::PreparedStatementCacheExpired.new(e.cause.message) else @lock.synchronize do # outside of transactions we can simply flush this query and retry @statements.delete sql_key(sql) end retry end end