exec_cache(sql, name, binds) private

No documentation

This method has no description. You can help the Ruby on Rails community by adding new notes.

Hide source
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 601
        def exec_cache(sql, name, binds)
          stmt_key = prepare_statement(sql)
          type_casted_binds = binds.map { |attr| type_cast(attr.value_for_database) }

          log(sql, name, binds, stmt_key) do
            @connection.exec_prepared(stmt_key, type_casted_binds)
          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
            # outside of transactions we can simply flush this query and retry
            @statements.delete sql_key(sql)
            retry
          end
        end
Register or log in to add new notes.