From 496204009eb3265a71d27c8a5513ca0dd803ea45 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Thu, 10 Apr 2014 17:00:12 -0700 Subject: eagerly build the bind map --- activerecord/lib/active_record/statement_cache.rb | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'activerecord') diff --git a/activerecord/lib/active_record/statement_cache.rb b/activerecord/lib/active_record/statement_cache.rb index d2a0c6f618..c51145f62f 100644 --- a/activerecord/lib/active_record/statement_cache.rb +++ b/activerecord/lib/active_record/statement_cache.rb @@ -75,10 +75,11 @@ module ActiveRecord end def initialize(block = Proc.new) - @mutex = Mutex.new - @binds = nil + @mutex = Mutex.new + @binds = nil @query_builder = nil - @relation = block.call Params.new + @relation = block.call Params.new + @binds = BindMap.new @relation.bind_values end def execute(params) @@ -86,7 +87,7 @@ module ActiveRecord arel = rel.arel klass = rel.klass - bind_map = binds rel + bind_map = @binds bind_values = bind_map.bind params builder = query_builder klass.connection, arel @@ -97,10 +98,6 @@ module ActiveRecord alias :call :execute private - def binds(rel) - @binds || @mutex.synchronize { @binds ||= BindMap.new rel.bind_values } - end - def query_builder(connection, arel) @query_builder || @mutex.synchronize { @query_builder ||= connection.cacheable_query(arel) -- cgit v1.2.3