class ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
def exec_cache(sql, name, binds, async: false)
Experimental RBS support (using type sampling data from the type_fusion
project).
def exec_cache: (String sql, String name, Array[ActiveRecord::Relation::QueryAttribute] binds, async: false) -> PG::Result
This signature was generated using 1 sample from 1 application.
def exec_cache(sql, name, binds, async: false) materialize_transactions mark_transaction_written_if_write(sql) update_typemap_for_default_timezone stmt_key = prepare_statement(sql, binds) type_casted_binds = type_casted_binds(binds) log(sql, name, binds, type_casted_binds, stmt_key, async: async) do ActiveSupport::Dependencies.interlock.permit_concurrent_loads do @connection.exec_prepared(stmt_key, type_casted_binds) 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